コード例 #1
0
        public IMessageInputter<object> Build(ReplySendChannelSchema schema, EndpointAddress senderAddress)
        {
            SendMessageCache cache = CreateCache(schema, senderAddress);
            RegisterCacheWithAcknowledgementHandler(cache);

            IMessageProcessor<object, object> startPoint = CreateStartPoint();
            BuildPipeline(startPoint, schema, senderAddress, cache);

            SendChannelBuiltEvent(schema, senderAddress);

            return startPoint;
        }
        public void Build(ReplySendChannelSchema schema)
        {
            Contract.Requires(schema != null);

            var distributor = new ReplySendChannelDistributor(
                changeStoreSelector.SelectChangeStore(schema), 
                replyAddressLookup, 
                builder, 
                schema,
                checkPointStrategy);

            MessagePipelineBuilder.Build()      
                .With(messageReceiver)
                .ToProcessor(new BodyMessageFilter(schema.FromAddress))
                .ToEndPoint(new ReplySendSubscriptionHandler(distributor));

            MessagePipelineBuilder.Build()
                .WithBusReplyTo(CreateReplyChannelMessageFilter(schema))
                .ToEndPoint(distributor);

            distributor.Initialise();
        }
 ReplyChannelMessageFilterStategy CreateReplyChannelMessageFilterStategy(ReplySendChannelSchema schema)
 {
     return new ReplyChannelMessageFilterStategy(replyAddressLookup, schema.FromAddress);
 }
 MessageFilter CreateReplyChannelMessageFilter(ReplySendChannelSchema schema)
 {
     return new MessageFilter(CreateReplyChannelMessageFilterStategy(schema));
 }
コード例 #5
0
 void BuildPipeline(IMessageProcessor<object, object> startPoint, ReplySendChannelSchema schema, EndpointAddress senderAddress, SendMessageCache cache)
 {
     MessagePipelineBuilder.Build()
         .With(startPoint)
         .ToProcessor(new MessageHookRunner<object>(schema.Hooks))
         .ToProcessor(new BatchPackager())
         .ToConverter(new MessagePayloadPackager(serialiser))
         .ToProcessor(new ReplyCorrelationApplier(correlationLookup))
         .ToProcessor(new Sequencer(cache))
         .ToProcessor(new MessageAddresser(schema.FromAddress, senderAddress))
         .ToProcessor(new SendChannelMessageCacher(cache))
         .ToMessageRepeater(cache, systemTime, taskRepeater, schema.RepeatStrategy)
         .ToProcessor(new SendChannelMessageCacheUpdater(cache))
         .ToProcessor(new SequenceOriginRecorder(cache))
         .ToProcessor(new PersistenceSourceRecorder())
         .Queue()
         .ToProcessor(new MessageExpirer(schema.ExpiryAction, cache, schema.ExpiryStrategy))
         .ToProcessor(new LoadBalancer(cache, taskScheduler))
         .ToProcessor(new LastSentRecorder(systemTime))
         .ToProcessor(authenticationSessionAttacherFactory.Create())
         .ToEndPoint(messageSender);
 }
コード例 #6
0
 SendMessageCache CreateCache(ReplySendChannelSchema schema, EndpointAddress senderAddress)
 {
     return messageCacheFactory.BuildSendCache(PersistenceUseType.ReplySend, senderAddress, schema);
 }
コード例 #7
0
 static void SendChannelBuiltEvent(ReplySendChannelSchema schema, EndpointAddress senderAddress)
 {
     Messenger.Send(new ReplySendChannelBuilt
     {
         CacheAddress = senderAddress,
         ReceiverAddress = schema.FromAddress,
         SenderAddress = senderAddress
     });
 }