void BuildPipeline(SubscriberRecieveChannelSchema schema, ReceiveMessageCache messageCache) { MessagePipelineBuilder.Build() .With(messageReceiver) .ToProcessor(new BodyMessageFilter(schema.Address)) .ToProcessorIf(new NullMessageProcessor(), schema.BlockMessages) .ToProcessor(new SenderAuthenticationSessionVerifier(authenticationSessionCache, authenticatedServerRegistry)) .ToProcessor(new MessageRegisteredAddressReassigner(serverAddressRegistry)) .ToProcessor(new MessageSendTimeRemover()) .ToProcessor(new SequenceOriginApplier(messageCache)) .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)) .ToProcessor(new MessageHookRunner<MessagePayload>(schema.PreUnpackagingHooks)) .ToConverter(new MessagePayloadUnpackager(serialiser)) .ToProcessor(new MessageFilter(schema.FilterStrategy)) .ToProcessorIf(new MainThreadMessageMashaller(mainThreadMarshaller), schema.HandleEventsOnMainThread) .ToProcessor(schema.UnitOfWorkRunnerCreator()) .ToProcessor(new MessageHookRunner<object>(schema.Hooks)) .ToEndPoint(messageHandlerRouter); }
public void Build(SubscriberRecieveChannelSchema schema) { BuildPipeline(schema, CreateCache(schema)); NotifySubscriberReceiveChannelBuilt(schema); }
ReceiveMessageCache CreateCache(SubscriberRecieveChannelSchema schema) { return messageCacheFactory.BuildReceiveCache(PersistenceUseType.SubscriberReceive, schema.Address, schema); }
static void NotifySubscriberReceiveChannelBuilt(SubscriberRecieveChannelSchema schema) { Messenger.Send(new SubscriberReceiveChannelBuilt { CacheAddress = schema.Address, SubscriberAddress = schema.Address, PublisherAddress = schema.ToAddress }); }