1

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を増やすことでこれを修正できることはわかっていますが、タイムアウトの問題があるのではないかと考えています。メッセージがキューから削除されるのはなぜですか?

メッセージ キューを初めて使用するので、問題の解決に役立つ情報を教えてください。

4

1 に答える 1

1

さて、この答えは今私にすべてを説明しています https://stackoverflow.com/a/9886168/3314116

AbstractMessageListenerContainer で AUTO_ACKNOWLEDGE モードを使用すると、メッセージが消費される前にメッセージが確認されるようです。私が推測する最良の選択肢は、トランザクションを使用することです

于 2015-04-17T15:36:12.660 に答える