Example usage for org.springframework.amqp.rabbit.listener DirectMessageListenerContainer setFailedDeclarationRetryInterval

List of usage examples for org.springframework.amqp.rabbit.listener DirectMessageListenerContainer setFailedDeclarationRetryInterval

Introduction

In this page you can find the example usage for org.springframework.amqp.rabbit.listener DirectMessageListenerContainer setFailedDeclarationRetryInterval.

Prototype

public void setFailedDeclarationRetryInterval(long failedDeclarationRetryInterval) 

Source Link

Document

Set the interval between passive queue declaration attempts in milliseconds.

Usage

From source file:org.springframework.amqp.rabbit.listener.DirectMessageListenerContainerIntegrationTests.java

@Test
public void testRecoverBrokerLoss() throws Exception {
    ConnectionFactory mockCF = mock(ConnectionFactory.class);
    Connection connection = mock(Connection.class);
    Channel channel = mock(Channel.class);
    given(connection.isOpen()).willReturn(true);
    given(mockCF.createConnection()).willReturn(connection);
    given(connection.createChannel(false)).willReturn(channel);
    given(channel.isOpen()).willReturn(true);
    final CountDownLatch latch1 = new CountDownLatch(1);
    final CountDownLatch latch2 = new CountDownLatch(2);
    ArgumentCaptor<Consumer> consumerCaptor = ArgumentCaptor.forClass(Consumer.class);
    final String tag = "tag";
    willAnswer(i -> {/*ww  w. j a v  a2 s .  c  om*/
        latch1.countDown();
        latch2.countDown();
        return tag;
    }).given(channel).basicConsume(eq("foo"), anyBoolean(), anyString(), anyBoolean(), anyBoolean(), anyMap(),
            consumerCaptor.capture());
    DirectMessageListenerContainer container = new DirectMessageListenerContainer(mockCF);
    container.setQueueNames("foo");
    container.setBeanName("brokerLost");
    container.setConsumerTagStrategy(q -> "tag");
    container.setShutdownTimeout(1);
    container.setMonitorInterval(200);
    container.setFailedDeclarationRetryInterval(200);
    container.afterPropertiesSet();
    container.start();
    assertTrue(latch1.await(10, TimeUnit.SECONDS));
    given(channel.isOpen()).willReturn(false);
    assertTrue(latch2.await(10, TimeUnit.SECONDS));
    container.setShutdownTimeout(1);
    container.stop();
}

From source file:org.springframework.amqp.rabbit.listener.DirectMessageListenerContainerIntegrationTests.java

private void testRecoverDeletedQueueGuts(boolean autoDeclare) throws Exception {
    CachingConnectionFactory cf = new CachingConnectionFactory("localhost");
    DirectMessageListenerContainer container = new DirectMessageListenerContainer(cf);
    if (autoDeclare) {
        GenericApplicationContext context = new GenericApplicationContext();
        context.getBeanFactory().registerSingleton("foo", new Queue(Q1));
        RabbitAdmin admin = new RabbitAdmin(cf);
        admin.setApplicationContext(context);
        context.getBeanFactory().registerSingleton("admin", admin);
        context.refresh();//from ww  w.  java2s .  com
        container.setApplicationContext(context);
    }
    container.setAutoDeclare(autoDeclare);
    container.setQueueNames(Q1, Q2);
    container.setConsumersPerQueue(2);
    container.setConsumersPerQueue(2);
    container.setMessageListener(m -> {
    });
    container.setFailedDeclarationRetryInterval(500);
    container.setBeanName("deleteQauto=" + autoDeclare);
    container.setConsumerTagStrategy(new Tag());
    container.afterPropertiesSet();
    container.start();
    assertTrue(consumersOnQueue(Q1, 2));
    assertTrue(consumersOnQueue(Q2, 2));
    assertTrue(activeConsumerCount(container, 4));
    brokerRunning.deleteQueues(Q1);
    assertTrue(consumersOnQueue(Q2, 2));
    assertTrue(activeConsumerCount(container, 2));
    assertTrue(restartConsumerCount(container, 2));
    RabbitAdmin admin = new RabbitAdmin(cf);
    if (!autoDeclare) {
        Thread.sleep(2000);
        admin.declareQueue(new Queue(Q1));
    }
    assertTrue(consumersOnQueue(Q1, 2));
    assertTrue(consumersOnQueue(Q2, 2));
    assertTrue(activeConsumerCount(container, 4));
    container.stop();
    assertTrue(consumersOnQueue(Q1, 0));
    assertTrue(consumersOnQueue(Q2, 0));
    assertTrue(activeConsumerCount(container, 0));
    assertEquals(0, TestUtils.getPropertyValue(container, "consumersByQueue", MultiValueMap.class).size());
    cf.destroy();
}

From source file:org.springframework.amqp.rabbit.listener.DirectMessageListenerContainerIntegrationTests.java

@Test
public void testNonManagedContainerStopsWhenConnectionFactoryDestroyed() throws Exception {
    CachingConnectionFactory cf = new CachingConnectionFactory("localhost");
    ApplicationContext context = mock(ApplicationContext.class);
    cf.setApplicationContext(context);/*from   www . java  2 s  . co m*/
    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.stop();
    cf.destroy();
    int n = 0;
    while (n++ < 100 && container.isRunning()) {
        Thread.sleep(100);
    }
    assertFalse(container.isRunning());
}

From source file:org.springframework.amqp.rabbit.listener.DirectMessageListenerContainerTests.java

@SuppressWarnings("unchecked")
@Test//from  ww  w .  ja  va2 s .  c  om
public void testRecoverBrokerLoss() throws Exception {
    ConnectionFactory mockCF = mock(ConnectionFactory.class);
    Connection connection = mock(Connection.class);
    Channel channel = mock(Channel.class);
    given(connection.isOpen()).willReturn(true);
    given(mockCF.createConnection()).willReturn(connection);
    given(connection.createChannel(false)).willReturn(channel);
    given(channel.isOpen()).willReturn(true);
    final CountDownLatch latch1 = new CountDownLatch(1);
    final CountDownLatch latch2 = new CountDownLatch(2);
    ArgumentCaptor<Consumer> consumerCaptor = ArgumentCaptor.forClass(Consumer.class);
    final String tag = "tag";
    willAnswer(i -> {
        latch1.countDown();
        latch2.countDown();
        return tag;
    }).given(channel).basicConsume(eq("foo"), anyBoolean(), anyString(), anyBoolean(), anyBoolean(), anyMap(),
            consumerCaptor.capture());
    DirectMessageListenerContainer container = new DirectMessageListenerContainer(mockCF);
    container.setQueueNames("foo");
    container.setBeanName("brokerLost");
    container.setConsumerTagStrategy(q -> "tag");
    container.setShutdownTimeout(1);
    container.setMonitorInterval(200);
    container.setFailedDeclarationRetryInterval(200);
    container.afterPropertiesSet();
    container.start();
    assertTrue(latch1.await(10, TimeUnit.SECONDS));
    given(channel.isOpen()).willReturn(false);
    assertTrue(latch2.await(10, TimeUnit.SECONDS));
    container.setShutdownTimeout(1);
    container.stop();
}

From source file:org.springframework.amqp.rabbit.listener.DirectMessageListenerContainerTests.java

private void testRecoverDeletedQueueGuts(boolean autoDeclare) throws Exception {
    CachingConnectionFactory cf = new CachingConnectionFactory("localhost");
    DirectMessageListenerContainer container = new DirectMessageListenerContainer(cf);
    if (autoDeclare) {
        GenericApplicationContext context = new GenericApplicationContext();
        context.getBeanFactory().registerSingleton("foo", new Queue(Q1));
        RabbitAdmin admin = new RabbitAdmin(cf);
        admin.setApplicationContext(context);
        context.getBeanFactory().registerSingleton("admin", admin);
        context.refresh();/* w  w  w. j av a  2  s .  co  m*/
        container.setApplicationContext(context);
    }
    container.setAutoDeclare(autoDeclare);
    container.setQueueNames(Q1, Q2);
    container.setConsumersPerQueue(2);
    container.setConsumersPerQueue(2);
    container.setMessageListener(m -> {
    });
    container.setFailedDeclarationRetryInterval(500);
    container.setBeanName("deleteQauto=" + autoDeclare);
    container.setConsumerTagStrategy(new Tag());
    container.afterPropertiesSet();
    container.start();
    assertTrue(consumersOnQueue(Q1, 2));
    assertTrue(consumersOnQueue(Q2, 2));
    assertTrue(activeConsumerCount(container, 4));
    brokerRunning.getAdmin().deleteQueue(Q1);
    assertTrue(consumersOnQueue(Q2, 2));
    assertTrue(activeConsumerCount(container, 2));
    assertTrue(restartConsumerCount(container, 2));
    if (!autoDeclare) {
        Thread.sleep(2000);
        brokerRunning.getAdmin().declareQueue(new Queue(Q1));
    }
    assertTrue(consumersOnQueue(Q1, 2));
    assertTrue(consumersOnQueue(Q2, 2));
    assertTrue(activeConsumerCount(container, 4));
    container.stop();
    assertTrue(consumersOnQueue(Q1, 0));
    assertTrue(consumersOnQueue(Q2, 0));
    assertTrue(activeConsumerCount(container, 0));
    assertEquals(0, TestUtils.getPropertyValue(container, "consumersByQueue", MultiValueMap.class).size());
    cf.destroy();
}