public DirectReplyToMessageListenerContainer(ConnectionFactory connectionFactory) { super(connectionFactory); super.setQueueNames(Address.AMQ_RABBITMQ_REPLY_TO); setAcknowledgeMode(AcknowledgeMode.NONE); super.setConsumersPerQueue(0); super.setIdleEventInterval(DEFAULT_IDLE); }
public DirectReplyToMessageListenerContainer(ConnectionFactory connectionFactory) { super(connectionFactory); super.setQueueNames(Address.AMQ_RABBITMQ_REPLY_TO); setAcknowledgeMode(AcknowledgeMode.NONE); super.setConsumersPerQueue(0); super.setIdleEventInterval(DEFAULT_IDLE); }
@Test public void testEvents() throws Exception { CachingConnectionFactory cf = new CachingConnectionFactory("localhost"); DirectMessageListenerContainer container = new DirectMessageListenerContainer(cf); container.setQueueNames(EQ1, EQ2); final List<Long> times = new ArrayList<>(); final CountDownLatch latch1 = new CountDownLatch(2); final CountDownLatch latch2 = new CountDownLatch(2); container.setApplicationEventPublisher(event -> { if (event instanceof ListenerContainerIdleEvent) { times.add(System.currentTimeMillis()); latch1.countDown(); } else if (event instanceof ListenerContainerConsumerTerminatedEvent) { latch2.countDown(); } }); container.setMessageListener(m -> { }); container.setIdleEventInterval(50L); container.setBeanName("events"); container.setConsumerTagStrategy(new Tag()); container.afterPropertiesSet(); container.start(); assertTrue(latch1.await(10, TimeUnit.SECONDS)); assertThat(times.get(1) - times.get(0), greaterThanOrEqualTo(50L)); brokerRunning.deleteQueues(EQ1, EQ2); assertTrue(latch2.await(10, TimeUnit.SECONDS)); container.stop(); cf.destroy(); }
@Test public void testNonManagedContainerStopsWhenConnectionFactoryDestroyed() throws Exception { CachingConnectionFactory cf = new CachingConnectionFactory("localhost"); ApplicationContext context = mock(ApplicationContext.class); cf.setApplicationContext(context); DirectMessageListenerContainer container = new DirectMessageListenerContainer(cf); final CountDownLatch latch = new CountDownLatch(1); container.setMessageListener(m -> { latch.countDown(); }); container.setQueueNames(Q1); container.setBeanName("stopAfterDestroy"); container.setIdleEventInterval(500); container.setFailedDeclarationRetryInterval(500); container.afterPropertiesSet(); container.start(); new RabbitTemplate(cf).convertAndSend(Q1, "foo"); assertTrue(latch.await(10, TimeUnit.SECONDS)); cf.onApplicationEvent(new ContextClosedEvent(context)); cf.destroy(); int n = 0; while (n++ < 100 && container.isRunning()) { Thread.sleep(100); } assertFalse(container.isRunning()); }