void BuildPipeline(PointToPointReceiverChannelSchema schema, ReceiveMessageCache messageCache)
 {
     MessagePipelineBuilder.Build()
         .With(messageReceiver)
         .ToProcessor(new BodyMessageFilter(schema.Address))
         .ToProcessorIf(new NullMessageProcessor(), schema.BlockMessages)
         .ToProcessor(new ReceiverAuthenticationSessionVerifier(authenticationSessionCache, authenticatedServerRegistry))
         .ToProcessor(new MessageRegisteredAddressReassigner(serverAddressRegistry))
         .ToProcessor(new SequenceOriginApplier(messageCache))
         .ToProcessor(new MessageSendTimeRemover())
         .ToProcessor(new ReceiveChannelMessageCacher(messageCache))
         .ToProcessor(new MessageAcknowledger(acknowledgementSender))
         .ToSimpleMessageRepeater(messageCache, systemTime, taskRepeater)
         .ToProcessor(new ReceiveChannelMessageCacher(messageCache))
         .Queue()
         .ToResequencerIfSequenced(messageCache, schema)
         .ToProcessor(new ExceptionHandler(schema.ContinueOnException))
         .ToConverter(new MessagePayloadUnpackager(serialiser))
         .ToProcessor(new MessageFilter(schema.FilterStrategy))
         .ToProcessor(schema.UnitOfWorkRunnerCreator())
         .ToProcessor(new BatchUnpackager())
         .ToEndPoint(messageHandlerRouter);
 }
 public void Build(PointToPointReceiverChannelSchema schema)
 {
     BuildPipeline(schema, CreateCache(schema));
     NotifyPointToPointReceiveChannelBuilt(schema);
 }
 ReceiveMessageCache CreateCache(PointToPointReceiverChannelSchema schema)
 {
     return messageCacheFactory.BuildReceiveCache(PersistenceUseType.PointToPointReceive, schema.Address, schema);
 }
 static void NotifyPointToPointReceiveChannelBuilt(PointToPointReceiverChannelSchema schema)
 {
     Messenger.Send(new PointToPointReceiveChannelBuilt {Address = schema.Address});
 }