代码之家  ›  专栏  ›  技术社区  ›  titou10

如何使用OpenLiberty和IBM MQ实现FIFO范式?

  •  0
  • titou10  · 技术社区  · 5 年前


    我们拥有的模式之一是对一些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?

    0 回复  |  直到 5 年前