public void Build(PublisherChannelSchema schema) { Publisher publisherEndpoint = CreatePublisher(schema); BuildPipeline(schema, CreateCache(schema), publisherEndpoint); RegisterPublisher(schema, publisherEndpoint); NotifyPublisherChannelBuilt(schema); }
public PublisherConfiguration(EndpointAddress address, MessagingConfiguration messagingConfiguration) : base(messagingConfiguration) { schema = new PublisherChannelSchema { FromAddress = address, MessageFilterStrategy = new PassThroughMessageFilterStategy() }; }
void BuildPipeline(PublisherChannelSchema schema, SendMessageCache cache, Publisher publisherEndpoint) { MessagePipelineBuilder.Build() .WithBusPublishTo(new MessageFilter(schema.MessageFilterStrategy)) .ToProcessor(new MessageHookRunner<object>(schema.Hooks)) .ToConverter(new MessagePayloadPackager(serialiser)) .ToProcessor(new MessageHookRunner<MessagePayload>(schema.PostPackagingHooks)) .ToProcessor(new Sequencer(cache)) .ToProcessor(new SendChannelMessageCacher(cache)) .ToSimpleMessageRepeater(cache, systemTime, taskRepeater) .ToProcessor(new SendChannelMessageCacheUpdater(cache)) .ToProcessor(publisherEndpoint) .ToEndPoint(new MessageDecacher(cache)); }
SendMessageCache CreateCache(PublisherChannelSchema schema) { return messageCacheFactory.BuildSendCache(PersistenceUseType.PublisherSend, schema.FromAddress, schema); }
Publisher CreatePublisher(PublisherChannelSchema schema) { return new Publisher(schema.FromAddress, subscriberChannelBuilder, changeStore, checkPointStrategy); }
void RegisterPublisher(PublisherChannelSchema schema, Publisher publisherEndpoint) { publisherRegistry.RegisterPublisher(schema.FromAddress, publisherEndpoint); }
static void NotifyPublisherChannelBuilt(PublisherChannelSchema schema) { Messenger.Send(new PublisherChannelBuilt {Address = schema.FromAddress}); }