public StraightThroughPipelineRunner()
		{
			Pipe consumer = PipeSegment.Consumer<ClaimModified>(m => Interlocked.Increment(ref _count));

			_input = PipeSegment.Input(consumer);

			_message = new ClaimModified();
		}
Beispiel #2
0
        public StraightThroughPipelineRunner()
        {
            Pipe consumer = PipeSegment.Consumer <ClaimModified>(m => Interlocked.Increment(ref _count));

            _input = PipeSegment.Input(consumer);

            _message = new ClaimModified();
        }
Beispiel #3
0
        private void Pusher()
        {
            var message = new ClaimModified();

            for (int i = 0; i < _limit / 2; i++)
            {
                _input.Send(message);
            }
        }
		public RecipientListPipelineRunner()
		{
			Pipe consumer = PipeSegment.Consumer<ClaimModified>(m => Interlocked.Increment(ref _count));
			Pipe consumer2 = PipeSegment.Consumer<ClaimModified>(m => Interlocked.Increment(ref _count2));

			var recipients = new[] {consumer, consumer2};

			Pipe recipientList = PipeSegment.RecipientList<ClaimModified>(recipients);
			Pipe filter = PipeSegment.Filter<object>(recipientList);
			Pipe objectRecipientList = PipeSegment.RecipientList<object>(new[] {filter});

			_input = PipeSegment.Input(objectRecipientList);

			_message = new ClaimModified();
		}
Beispiel #5
0
        public RecipientListPipelineRunner()
        {
            Pipe consumer  = PipeSegment.Consumer <ClaimModified>(m => Interlocked.Increment(ref _count));
            Pipe consumer2 = PipeSegment.Consumer <ClaimModified>(m => Interlocked.Increment(ref _count2));

            var recipients = new[] { consumer, consumer2 };

            Pipe recipientList       = PipeSegment.RecipientList <ClaimModified>(recipients);
            Pipe filter              = PipeSegment.Filter <object>(recipientList);
            Pipe objectRecipientList = PipeSegment.RecipientList <object>(new[] { filter });

            _input = PipeSegment.Input(objectRecipientList);

            _message = new ClaimModified();
        }
Beispiel #6
0
        public void How_many_messages_can_the_pipe_send_per_second()
        {
            long count  = 0;
            long count2 = 0;
            long limit  = 2500000;

            var messageSink = new InstanceMessageSink <ClaimModified>(MultipleHandlerSelector.ForHandler(
                                                                          HandlerSelector.ForHandler <ClaimModified>(m => { count++; })));

            var messageSink2 = new InstanceMessageSink <ClaimModified>(MultipleHandlerSelector.ForHandler(
                                                                           HandlerSelector.ForHandler <ClaimModified>(m => { count2++; })));

            var router = new MessageRouter <IConsumeContext <ClaimModified> >();

            router.Connect(messageSink);
            router.Connect(messageSink2);


            var translater   = new InboundConvertMessageSink <ClaimModified>(router);
            var objectRouter = new MessageRouter <IConsumeContext>();

            objectRouter.Connect(translater);
            var pipeline = new InboundMessagePipeline(objectRouter, MockRepository.GenerateMock <IInboundPipelineConfigurator>());

            var message = new ClaimModified();
            var context = new ConsumeContext <ClaimModified>(ReceiveContext.Empty(), message);

            for (int i = 0; i < 100; i++)
            {
                pipeline.Dispatch(context);
            }

            count  = 0;
            count2 = 0;

            Stopwatch timer = Stopwatch.StartNew();

            for (int i = 0; i < limit; i++)
            {
                pipeline.Dispatch(context);
            }

            timer.Stop();

            Trace.WriteLine("Received: " + (count + count2) + ", expected " + limit * 2);
            Trace.WriteLine("Elapsed Time: " + timer.ElapsedMilliseconds + "ms");
            Trace.WriteLine("Messages Per Second: " + limit * 1000 / timer.ElapsedMilliseconds);
        }
Beispiel #7
0
        public void How_many_messages_can_the_pipe_send_per_second()
        {
            _count  = 0;
            _count2 = 0;
            _limit  = 5000000;

            Pipe consumer  = PipeSegment.Consumer <ClaimModified>(m => { Interlocked.Increment(ref _count); });
            Pipe consumer2 = PipeSegment.Consumer <ClaimModified>(m => { Interlocked.Increment(ref _count2); });

            var recipients = new[] { consumer, consumer2 };

            Pipe recipientList       = PipeSegment.RecipientList <ClaimModified>(recipients);
            Pipe filter              = PipeSegment.Filter <object>(recipientList);
            Pipe objectRecipientList = PipeSegment.RecipientList <object>(new[] { filter });

            _input = PipeSegment.Input(objectRecipientList);

            var message = new ClaimModified();

            for (int i = 0; i < 100; i++)
            {
                _input.Send(message);
            }

            _count  = 0;
            _count2 = 0;

            Thread pusherThread  = new Thread(Pusher);
            Thread pusherThread2 = new Thread(Pusher);

            Stopwatch timer = Stopwatch.StartNew();

            pusherThread.Start();
            pusherThread2.Start();

            pusherThread.Join(10000);
            pusherThread2.Join(1000);

            timer.Stop();

            Trace.WriteLine("Received: " + (_count + _count2) + ", expected " + _limit * 2);
            Trace.WriteLine("Elapsed Time: " + timer.ElapsedMilliseconds + "ms");
            Trace.WriteLine("Messages Per Second: " + _limit * 1000 / timer.ElapsedMilliseconds);
        }
Beispiel #8
0
        public void How_many_messages_can_the_pipe_send_per_second()
        {
            _count = 0;
            _count2 = 0;
            _limit = 5000000;

            Pipe consumer = PipeSegment.Consumer<ClaimModified>(m => { Interlocked.Increment(ref _count); });
            Pipe consumer2 = PipeSegment.Consumer<ClaimModified>(m => { Interlocked.Increment(ref _count2); });

            var recipients = new[] {consumer, consumer2};

            Pipe recipientList = PipeSegment.RecipientList<ClaimModified>(recipients);
            Pipe filter = PipeSegment.Filter<object>(recipientList);
            Pipe objectRecipientList = PipeSegment.RecipientList<object>(new[] {filter});
            _input = PipeSegment.Input(objectRecipientList);

            var message = new ClaimModified();

            for (int i = 0; i < 100; i++)
            {
                _input.Send(message);
            }

            _count = 0;
            _count2 = 0;

            Thread pusherThread = new Thread(Pusher);
            Thread pusherThread2 = new Thread(Pusher);

            Stopwatch timer = Stopwatch.StartNew();

            pusherThread.Start();
            pusherThread2.Start();

            pusherThread.Join(10000);
            pusherThread2.Join(1000);

            timer.Stop();

            Trace.WriteLine("Received: " + (_count + _count2) + ", expected " + _limit*2);
            Trace.WriteLine("Elapsed Time: " + timer.ElapsedMilliseconds + "ms");
            Trace.WriteLine("Messages Per Second: " + _limit*1000/timer.ElapsedMilliseconds);
        }
Beispiel #9
0
 private void Pusher()
 {
     var message = new ClaimModified();
     for (int i = 0; i < _limit/2; i++)
     {
         _input.Send(message);
     }
 }