How do I limit the amount of times a JMS DefaultMessageListenerContainer will retry a message?

后端 未结 2 339
面向向阳花
面向向阳花 2021-01-18 04:14

I am using Spring JMS to connect to a Websphere MQ server. I implemented the SessionAwareListener interface to create a custom listener, reusing old code for the business lo

相关标签:
2条回答
  • 2021-01-18 05:05

    Putting back a message to the queue after some error is called backout in the Websphere MQ world.

    There are two alternatives how to handle it:

    1. In the queue manager: You can configure backout threshold and backout requeue name properties for the given queue. After backout treshold is reached, queue manager will put the message to the queue specified by the backout requeue name instead of redelivering it. See WebSphere MQ queue properties for more information.

    2. In your application: If you use JMS API, check the JMSXDeliveryCount property by calling msessage.getIntProperty("JMSXDeliveryCount") before you start processing the message. If it reaches some treshold, handle the message as errorneous.

    0 讨论(0)
  • 2021-01-18 05:06

    You can always check the JMSDeliveryCount. If it is more than the number you consider as maximum then just don't process the message and return.

    You can also configure your Websphere to move the bad message to the exception destination after some attempts.

    0 讨论(0)
提交回复
热议问题