RabbitMq连接超时异常

使用spring amqp(rabbitmq):

我的消费者需要花费大量的时间来处理消息,有时我的业务逻辑需要2个多小时,但在处理完毕后,当我尝试确认rabbitmq是否为“基本ack”时,它会引发连接超时异常。

我该怎么办 ? 我应该永远连接还是使用心跳?


如果你的逻辑绝对基于MANUAL ack,那么除非让你的连接长久生活,否则你确实没有选择。 无论如何,心跳应该在默认情况下存在。

否则,考虑使用AUTO ack解决方案,并在发生错误后,下游将消息发回队列以供将来使用。


考虑一个备选方案,在长期的商业运作开始之后立即进行确认,然后通知其状态:无论是失败还是成功,如果您有任何依赖的参与者。

正如阿尔乔姆和加里所说,长时间持有消息是一种反模式,您可能希望使这个过程真正异步 - 您的服务消费了一条消息并开始做一些事情:好吧,让我们承认这一点。 如果您需要重复失败,请在出现失败后再单独发送消息,以便其他消费者可以接受并处理该消息。

链接地址: http://www.djcxy.com/p/34109.html

上一篇: RabbitMq connection timeout exception

下一篇: Access /queue or /topic created via STOMP over AMQP