关于jakarta ee:如何防止Java MDB暂停IBM Websphere WAS 8.5上的错误?

How to prevent Java MDB from pausing on errors on IBM Websphere WAS 8.5?

引发异常后,我们的Java MDB应用程序的MQ消息端点正在暂停,消息为

1
CWWMQ0007W: The message endpoint <APP> has been paused by the system.  Message delivery failed to the endpoint more than <N> times.

我了解这是根据应用程序规范进行的,并且此行为对于许多应用程序都是合理的。

在我们的例子中,我们希望MQ消息使异常从队列中被消耗并且应用程序仍在运行,即。正在处理下一条消息。

除了通过在MDB onMessage方法中捕获任何Throwable之外,还有什么方法可以实现?


阅读本文,WebSphere Application Server V8.x如何处理有害消息,其中描述了各种场景。

如果只想继续处理而不停止端点,则在激活规范配置中取消选中Stop endpoint if message delivery fails或将Number of sequential delivery failures before suspending endpoint设置为更高的值。您还必须在WebSphere MQ中配置Backout threshold (BOTHRESH)属性。

这样,MQ将把异常消息放入DEAD.LETTER.QUEUE,并允许您处理下一条消息。