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});
 }