IBM MQ 消息驱动的 Bean 在 WebSphere Liberty 中暂停
针对激活规范的 maxSequentialDeliveryFailures 属性定义在暂停消息驱动的 bean (MDB) 之前资源适配器容许 MDB 实例发生的顺序消息传递失败的最大次数。
开始之前
您需要了解可能导致 MDB 在 WebSphere® Liberty中暂停的事件集。 资源适配器会将以下任何一种情况视为消息传递失败:
- 从 MDB 的 onMessage 方法中抛出的未经检查的异常。
- 在将消息传递到 MDB 之前,在处理资源适配器时发生的
JMSException。 - 在将消息传递到 MDB 之后,在处理资源适配器时发生的
JMSException。 - 用于使用所回滚消息的 XA 事务或本地事务。
- 应用程序服务器中没有可用于将消息传递到 MDB 的线程。
关于本任务
maxSequentialDeliveryFailures 属性的缺省值为 -1,这表示永不暂停 MDB。 任何其他负值均被视为 -1。 值:
- 0 表示 MDB 将在发生第一个错误时暂停
- 1 表示 MDB 将在发生连续两个错误时暂停
- 2 表示 MDB 将在发生连续三个错误时暂停,以此类推
仅在 WebSphere Liberty中,以及当 Liberty 的级别为 18.0.0.4或更高时,才能为激活规范配置此属性。
注意: 如果在除 Liberty以外的任何应用程序服务器环境中将该属性设置为非缺省值,那么将忽略该值并将警告消息写入日志。
此外,还可以将 IBM® MQ 资源适配器作为通用资源适配器安装到 WebSphere Liberty 中。 执行此操作将禁用所有 IBM MQ 和 WebSphere Application Server 集成功能,并阻止资源适配器检测其是否正在 Liberty中运行。 因此,不支持将 maxSequentialDeliveryFailures 设置为大于等于 0 的值,这样做会导致向日志中写入一条警告消息。
过程
在 WebSphere Liberty中,在 server.xml中的激活规范定义上指定 maxSequentialDeliveryFailures 属性。
例如:
<jmsActivationSpec>
<properties.wmqJms destinationRef="jndi/MDBQ"
transportType="BINDINGS"
queueManager="MQ21"
maxSequentialDeliveryFailures="1"/>
</jmsActivationSpec>