我们拥有的模式之一是对一些JMS队列使用“严格FIFO顺序”的队列。应用程序的许多实例都是并发运行的(“WAS中的集群成员”,kubernetes/statefulset/docker for OL中的pods”)。
在WAS中,我们可以通过
-
"WAS_EndpointInitialState"
到
"ACTIVE"
"INACTIVE"
-
"Maximum server sessions"
在JMS激活时设置为1
-
检查
"Stop endpoint if message delivery fails"
-
监视日志以查看激活是否已停止
"server.xml"
:
-
设置
"autoStart="true"
"jmsActivationSpec"
其中一个过程的节和
"false"
为其他人
-
设置
"maxEndpoints="1"
“jmsActivationSpec”
onMessage"
MDB中的方法?
@JoshMc评论后]
当前,消息被移动到DLQ,激活似乎从未停止,因此当队列中的下一条消息被消耗时,FIFO被中断。。。
onMessage()"
方法引发异常,消息被放回队列,并立即无休止地重新处理
背景
“server.xml”
从OL连接到IBM MQ的步骤如下
decribed here
[编辑2]
此功能(在发生故障时停止激活)在IBM MQ rar v9中实现。1.1和WebSphere Liberty 18.0。通过设置
"maxSequentialDeliveryFailures"
激活规范上的属性
in this RFE
March 7, 2019 1:17:38 EST PM[Default Executor-thread-7] ResourceAdapterImpl
WMQ messaging : '9.1.1.0-p911-L181120.1'.
MQJCA5003: 'maxSequentialFailureCount' cannot be set outside Websphere Liberty Profile
因此,问题仍然存在:在发生“故障”时,如何使激活停止
“onMessage”
MDB中的方法无法使用消息?向IBM MQ打开RFE,请求将该功能移植到Open Liberty?