コード例 #1
0
        public async Task TestWithDRTDMLCAndConnectionListenerExistingRFK()
        {
            var connectionFactory1 = new Mock <IConnectionFactory>();
            var connection1        = new Mock <IConnection>();
            var channel1           = new Mock <IModel>();

            var factories = new Dictionary <object, IConnectionFactory>
            {
                { "xxx[foo]", connectionFactory1.Object },
                { "xxx[amq.rabbitmq.reply-to]", connectionFactory1.Object }
            };

            var connectionFactory = new SimpleRoutingConnectionFactory();

            SimpleResourceHolder.Bind(connectionFactory, "foo");

            connection1.Setup((c) => c.IsOpen).Returns(true);
            connection1.Setup(c => c.CreateChannel(It.IsAny <bool>())).Returns(channel1.Object);

            channel1.Setup(c => c.IsOpen).Returns(true);

            var connectionMakerKey1 = new AtomicReference <object>();
            var latch = new CountdownEvent(1);

            connectionFactory1.Setup((f) => f.CreateConnection())
            .Returns(connection1.Object)
            .Callback(() =>
            {
                connectionMakerKey1.Value = connectionFactory.DetermineCurrentLookupKey();
                latch.Signal();
            });
            connectionFactory.SetTargetConnectionFactories(factories);
            var connectionMakerKey2 = new AtomicReference <object>();

            var container = new TestDirectReplyToMessageListenerContainer(connectionFactory, connectionMakerKey2)
            {
                LookupKeyQualifier = "xxx",
                ShutdownTimeout    = 10
            };

            container.Initialize();
            await container.Start();

            Assert.True(container._startedLatch.Wait(TimeSpan.FromSeconds(10))); // Container started

            var channelHolder = container.GetChannelHolder();

            Assert.True(latch.Wait(TimeSpan.FromSeconds(10)));
            container.ReleaseConsumerFor(channelHolder, true, "test");
            await container.Stop();

            Assert.Equal("xxx[amq.rabbitmq.reply-to]", connectionMakerKey1.Value);
            Assert.Equal("xxx[amq.rabbitmq.reply-to]", connectionMakerKey2.Value);
            Assert.Equal("foo", SimpleResourceHolder.Unbind(connectionFactory));
        }
コード例 #2
0
        public async Task TestWithDMLCAndConnectionListener()
        {
            var connectionFactory1 = new Mock <IConnectionFactory>();
            var connection1        = new Mock <IConnection>();
            var channel1           = new Mock <IModel>();

            var factories = new Dictionary <object, IConnectionFactory>
            {
                { "xxx[foo]", connectionFactory1.Object }
            };

            var connectionFactory = new SimpleRoutingConnectionFactory();

            connection1.Setup((c) => c.IsOpen).Returns(true);
            connection1.Setup(c => c.CreateChannel(It.IsAny <bool>())).Returns(channel1.Object);

            channel1.Setup(c => c.IsOpen).Returns(true);

            var connectionMakerKey1 = new AtomicReference <object>();
            var latch = new CountdownEvent(1);

            connectionFactory1.Setup((f) => f.CreateConnection())
            .Returns(connection1.Object)
            .Callback(() =>
            {
                connectionMakerKey1.Value = connectionFactory.DetermineCurrentLookupKey();
                latch.Signal();
            });
            connectionFactory.SetTargetConnectionFactories(factories);
            var connectionMakerKey2 = new AtomicReference <object>();

            var container = new TestDirectMessageListenerContainer(connectionFactory, connectionMakerKey2);

            container.SetQueueNames("foo");
            container.LookupKeyQualifier = "xxx";
            container.ShutdownTimeout    = 10;
            container.Initialize();
            await container.Start();

            Assert.True(container._startedLatch.Wait(TimeSpan.FromSeconds(10))); // Container started
            Assert.True(latch.Wait(TimeSpan.FromSeconds(10)));

            await container.Stop();

            Assert.Equal("xxx[foo]", connectionMakerKey1.Value);
            Assert.Equal("xxx[foo]", connectionMakerKey2.Value);
        }
コード例 #3
0
 protected override void RedeclareElementsIfNecessary()
 {
     connectionMakerKey2.Value = simpleFactory.DetermineCurrentLookupKey();
 }