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)); }
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); }
protected override void RedeclareElementsIfNecessary() { connectionMakerKey2.Value = simpleFactory.DetermineCurrentLookupKey(); }