示例#1
0
        public void DynamicReplyChannel()
        {
            QueueChannel replyChannel1 = new QueueChannel();
            QueueChannel replyChannel2 = new QueueChannel();

            replyChannel2.ObjectName = "replyChannel2";
            Object handler = new TestObject2();
            ServiceActivatingHandler endpoint        = new ServiceActivatingHandler(handler, "Handle");
            TestChannelResolver      channelResolver = new TestChannelResolver();

            channelResolver.AddChannel(replyChannel2);
            endpoint.ChannelResolver = channelResolver;
            IMessage testMessage1 = MessageBuilder.WithPayload("bar").SetReplyChannel(replyChannel1).Build();

            endpoint.HandleMessage(testMessage1);
            IMessage reply1 = replyChannel1.Receive(TimeSpan.FromMilliseconds(50));

            Assert.IsNotNull(reply1);
            Assert.That(reply1.Payload, Is.EqualTo("foobar"));
            IMessage reply2 = replyChannel2.Receive(TimeSpan.Zero);

            Assert.IsNull(reply2);
            IMessage testMessage2 =
                MessageBuilder.FromMessage(testMessage1).SetReplyChannelName("replyChannel2").Build();

            endpoint.HandleMessage(testMessage2);
            reply1 = replyChannel1.Receive(TimeSpan.Zero);
            Assert.IsNull(reply1);
            reply2 = replyChannel2.Receive(TimeSpan.Zero);
            Assert.IsNotNull(reply2);
            Assert.That(reply2.Payload, Is.EqualTo("foobar"));
        }
示例#2
0
        public void ReturnAddressHeaderWithChannelName()
        {
            QueueChannel channel = new QueueChannel(1);

            channel.ObjectName = "testChannel";
            TestChannelResolver channelResolver = new TestChannelResolver();

            channelResolver.AddChannel(channel);
            ServiceActivatingHandler endpoint = CreateEndpoint();

            endpoint.ChannelResolver = channelResolver;
            IMessage message = MessageBuilder.WithPayload("foo")
                               .SetReplyChannelName("testChannel").Build();

            endpoint.HandleMessage(message);
            IMessage reply = channel.Receive(TimeSpan.Zero);

            Assert.IsNotNull(reply);
            Assert.That(reply.Payload, Is.EqualTo("FOO"));
        }