gpt4 book ai didi

java - 由于未确认消息,Spring AMQP 卡在队列中

转载 作者:行者123 更新时间:2023-11-30 08:57:10 25 4
gpt4 key购买 nike

我正在使用 SimpleMessageListenerContainer 并且遇到问题,队列每隔一小时左右就会卡住,并且由于未确认消息而无法处理任何内容。

我确定这是由于错误未被正确捕获但无法追踪问题所致。

我已将确认模式设置为无,这“解决”了问题,但它实际上只是隐藏了问题。此外,如果我想抛出 AmqpException 并重新排队消息,这不适用于将确认模式设置为 NONE。

我的问题是如何追踪队列卡住的问题,有没有办法查看未确认消息的负载?或者是否有一种确认模式允许不需要确认但在抛出异常时重新排队消息?

这是我注册监听器的方式:

final SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queueName);
container.setMessageListener(new MQMessageListenerWrapper(listener));
container.setAcknowledgeMode(AcknowledgeMode.NONE);
container.start();

谢谢。

最佳答案

我最好的猜测是您的消费者线程卡在监听器上游的某个地方。当控制返回到容器时,消息被确认或拒绝;如果线程返回到容器,它不能处于未确认状态。

使用 jstack <pid>找出消费者线程卡住的地方。

你是对的NONE只是掩盖了这个问题。

关于java - 由于未确认消息,Spring AMQP 卡在队列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28283887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com