public StraightThroughPipelineRunner() { Pipe consumer = PipeSegment.Consumer<ClaimModified>(m => Interlocked.Increment(ref _count)); _input = PipeSegment.Input(consumer); _message = new ClaimModified(); }
public StraightThroughPipelineRunner() { Pipe consumer = PipeSegment.Consumer <ClaimModified>(m => Interlocked.Increment(ref _count)); _input = PipeSegment.Input(consumer); _message = new ClaimModified(); }
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(); }
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(); }
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); }
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); }
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); }
private void Pusher() { var message = new ClaimModified(); for (int i = 0; i < _limit/2; i++) { _input.Send(message); } }