【发布时间】:2021-10-26 17:47:49
【问题描述】:
我正在使用 Apache Camel 和 IBM MQ 发送消息。当消息被传递到远程队列时,我需要接收 COA。一般图片如下所示:
当消息到达 msg_q2 队列时,我应该收到返回的 COA。所以,问题是我无法将 QMGR_REM 设置为应该生成 COA 的回复队列管理器。
https://www.ibm.com/docs/en/ibm-mq/8.0?topic=messages-reply-queue-queue-manager
我尝试设置 JMS_IBM_MQMD_xxx 标头,但由于某种原因,这些标头要么被省略要么被忽略(被骆驼?),并且由于未指定回复队列的原因,消息未能放入队列。另外,我尝试将 JMSReplyTo 标头设置为queue://reply-to-qmgr/reply-to-q。在这种情况下,queue:// 部分被删除,其余部分被简单地设置为回复队列名称。
我对 Apache Camel 和 IBM MQ 比较陌生,因此非常感谢任何输入。提前谢谢!
【问题讨论】:
-
为什么需要将 QMGR_REM 设置为对 QMgr 的回复?为什么不确保存在从 QMGR_REM 回到 QMGR_LOC 的路由,以便可以传递发往 QMGR_LOC 上的队列 (replyToQ1) 的消息。那么你的应用程序就不需要做任何复杂的事情了。
-
因为 QMGR_REM 拥有 replyToQ2,并且队列管理器负责生成 COA(和其他报告消息)。我需要实现此功能以确保将消息成功放入 msg_q2 队列。
-
我认为您不了解 MQ 的工作原理。如果您在队列管理器“QMGR_REM”中为“QMGR_LOC”创建队列管理器别名,那么如果您指定,MQ 将自动将包括 COA 和 COD 的消息流回正确的队列“QMGR_LOC”的 RemoteQMgrName 和“ReplyToQ1”的 RemoteQName。就是这么简单。你把事情弄得太复杂了。
标签: java apache-camel ibm-mq