OpenMQ 超时后消息丢失
Message is lost after time out in OpenMQ
我有一个我们使用 OpenMQ 的系统。我注意到有时我们会从消费者那里收到此错误:
WARN org.springframework.jms.listener.DefaultMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'Sun Java System MQ Destination
getName(): xxMessageNamexx
Class: com.sun.messaging.Queue
getVERSION(): 3.0
isReadonly(): false
getProperties(): {imqDestinationName=xxDestinationNamexx, imqDestinationDescription=A Description for the Destination Object}' - trying to recover. Cause: [C4000]: Packet acknowledge failed. user=guest, broker=xxx:5555(55385)
com.sun.messaging.jms.JMSException: [C4000]: Packet acknowledge failed. user=guest, broker=xxx:5555(55385)
此外,该消息已丢失,不再在队列中。
我知道我可以通过增加 imqAckTimeout 来解决这个问题,但我想知道我们是否有超时问题,为什么消息会从队列中删除?
我是消息队列的新手,所以请让我知道我可以提供哪些信息来帮助解决问题?
好吧,这个答案现在向我解释了一切 。
似乎在 AbstractMessageListenerContainer 中使用 AUTO_ACKNOWLEDGE 模式可以让消息在消息消费之前得到确认。我想对我来说最好的选择是使用交易
我有一个我们使用 OpenMQ 的系统。我注意到有时我们会从消费者那里收到此错误:
WARN org.springframework.jms.listener.DefaultMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'Sun Java System MQ Destination
getName(): xxMessageNamexx
Class: com.sun.messaging.Queue
getVERSION(): 3.0
isReadonly(): false
getProperties(): {imqDestinationName=xxDestinationNamexx, imqDestinationDescription=A Description for the Destination Object}' - trying to recover. Cause: [C4000]: Packet acknowledge failed. user=guest, broker=xxx:5555(55385)
com.sun.messaging.jms.JMSException: [C4000]: Packet acknowledge failed. user=guest, broker=xxx:5555(55385)
此外,该消息已丢失,不再在队列中。
我知道我可以通过增加 imqAckTimeout 来解决这个问题,但我想知道我们是否有超时问题,为什么消息会从队列中删除?
我是消息队列的新手,所以请让我知道我可以提供哪些信息来帮助解决问题?
好吧,这个答案现在向我解释了一切 。
似乎在 AbstractMessageListenerContainer 中使用 AUTO_ACKNOWLEDGE 模式可以让消息在消息消费之前得到确认。我想对我来说最好的选择是使用交易