public bool Inspect <TMessage>(InboundConvertMessageSink <TMessage> converter) where TMessage : class { Append(string.Format("Translated to {0}", GetMessageName <TMessage>())); return(true); }
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); }
static MessageRouter <IConsumeContext <TOutput> > ConfigureRouter <TOutput>(MessageRouter <IConsumeContext> inputRouter) where TOutput : class { if (inputRouter == null) { throw new PipelineException("The input router was not found"); } var router = new MessageRouter <IConsumeContext <TOutput> >(); var translator = new InboundConvertMessageSink <TOutput>(router); inputRouter.Connect(translator); return(router); }
private static MessageRouter <IConsumeContext> SetupTwoRoutersOnly() { _consumer = new PerformantConsumer <PingMessage>(1500000); var messageSink = new InstanceMessageSink <PingMessage>(MultipleHandlerSelector.ForHandler( HandlerSelector.ForHandler <PingMessage>(_consumer.Consume))); var router = new MessageRouter <IConsumeContext <PingMessage> >(); router.Connect(messageSink); var translater = new InboundConvertMessageSink <PingMessage>(router); var nextRouter = new MessageRouter <IConsumeContext>(); nextRouter.Connect(translater); return(nextRouter); }