/** * @param messagesPerAck the messages per ack. * @return the spec. * @see DirectMessageListenerContainer#setMessagesPerAck(int) */ public DirectMessageListenerContainerSpec messagesPerAck(int messagesPerAck) { this.listenerContainer.setMessagesPerAck(messagesPerAck); return this; }
/** * @param messagesPerAck the messages per ack. * @return the spec. * @see DirectMessageListenerContainer#setMessagesPerAck(int) */ public DirectMessageListenerContainerSpec messagesPerAck(int messagesPerAck) { this.listenerContainer.setMessagesPerAck(messagesPerAck); return this; }
@Override protected void initializeContainer(DirectMessageListenerContainer instance, RabbitListenerEndpoint endpoint) { super.initializeContainer(instance, endpoint); if (this.taskScheduler != null) { instance.setTaskScheduler(this.taskScheduler); } if (this.monitorInterval != null) { instance.setMonitorInterval(this.monitorInterval); } if (endpoint != null && endpoint.getConcurrency() != null) { try { instance.setConsumersPerQueue(Integer.parseInt(endpoint.getConcurrency())); } catch (NumberFormatException e) { throw new IllegalStateException("Failed to parse concurrency: " + e.getMessage(), e); } } else if (this.consumersPerQueue != null) { instance.setConsumersPerQueue(this.consumersPerQueue); } if (this.messagesPerAck != null) { instance.setMessagesPerAck(this.messagesPerAck); } if (this.ackTimeout != null) { instance.setAckTimeout(this.ackTimeout); } }
container.setPrefetchCount(2); container.setMonitorInterval(100); container.setMessagesPerAck(10); container.setAckTimeout(100); container.setMessageListener(m -> {
@Test public void testDeferredAcks() throws Exception { CachingConnectionFactory cf = new CachingConnectionFactory("localhost"); DirectMessageListenerContainer container = new DirectMessageListenerContainer(cf); final CountDownLatch latch = new CountDownLatch(2); container.setMessageListener(m -> { latch.countDown(); }); container.setQueueNames(Q1); container.setBeanName("deferredAcks"); container.setMessagesPerAck(2); container.afterPropertiesSet(); container.start(); RabbitTemplate rabbitTemplate = new RabbitTemplate(cf); rabbitTemplate.convertAndSend(Q1, "foo"); rabbitTemplate.convertAndSend(Q1, "bar"); assertTrue(latch.await(10, TimeUnit.SECONDS)); container.stop(); cf.destroy(); }