Java 兔子预取
我将spring amqp与rabbitmq一起使用。我想要一条没有预回迁的消息。 我配置了Java 兔子预取,java,spring,amqp,spring-amqp,Java,Spring,Amqp,Spring Amqp,我将spring amqp与rabbitmq一起使用。我想要一条没有预回迁的消息。 我配置了 SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); container.setConnectionFactory(rabbitConnectionFactory()); container.setQueueNames( ProjectConfi
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(rabbitConnectionFactory());
container.setQueueNames(
ProjectConfigs.getInstance().get_RABBIT_TASK_QUEUE()
);
container.setMessageListener(taskListener());
container.setConcurrentConsumers(1);
container.setPrefetchCount(1);
container.setTxSize(1);
return container;
如何禁用预回迁并仅获取一条消息/
预回迁
只需控制代理每次允许在消费者处未完成的消息数量。当设置为1时,这意味着代理将发送1条消息,等待ack,然后发送下一条消息
它默认为1。将其设置为0将意味着代理将不受限制地向消费者发送消息,而不考虑ACK
如果您只需要一条消息,然后停止,则不应使用容器,您可以使用
rabbitmplate.receive()
方法之一。我尝试使用Spring AMQP执行此操作
@Bean
public MessageListener taskListener() {
return new MessageListener() {
public void onMessage(Message message) {
try {
LOGGER.info(new String(message.getBody(), "UTF-8"));
Converter converter = new Converter();
converter.startConvert(new String(message.getBody(), "UTF-8"));
} catch (Exception e) {
LOGGER.error(getStackTrace(e));
}
}
};
}
嗯,我怎么知道队列中存在没有无限循环的消息?计时器?也许你应该解释一下你的用例(你想实现什么)。为什么您关心消息是否存在?使用侦听器容器,您的应用程序是消息驱动的。我想创建linux系统服务。如果队列不包含消息,则空闲,否则如果收入10条消息。恶魔得到一条消息,处理它,在得到下一条消息之后。