将 MQ 消息从一个队列复制到另一个队列
Copy MQ Messages from one Queue to another
问题:
是否可以将 MQ 消息从一个队列 Manager/Queue 复制到另一个队列 Manager/Queue?
场景:
我有一个 "PROD" 队列管理器,当它在其队列上收到消息时,我想 "copy" 将消息发送到 "TEST" 队列管理器上的队列。
要求
- 原始消息必须保留在 PROD 队列中才能正常处理。
- 这必须是一个自动化过程(一天中有很多消息)。我无法逐条消息进行干预。
- 如果可能的话,我希望通过一些本机 MQ 功能而不是临时的 program/script。
- 复制必须尽可能接近实时
- 必须使用 MQ 版本 7.0.2.1(!)。这无法更改。
- 必须 运行 在 Red Hat Enterprise Linux 服务器版本 5.11 (Tikanga) 上。同样,无法更改。
我不是 MQ 专家所以请使用小词
提前致谢
您只需要 mqadmin 员工和这个 technote
gouda 指出的 technote 的唯一问题是 MQ 将 modify/changed 复制每条消息的 MsgId 和 CorrelId。
如果 MsgId and/or CorrelId 字段很重要,那么唯一的其他选项是复制消息的 MQ API 出口。您可能需要像 MQ Message Replication.
这样的商业产品
下一个问题是如何将消息从 PROD 队列移动到 TEST 队列?您绝对不想在 PROD 队列管理器和 TEST 队列管理器之间创建通道。
有很多工具可以将 PROD 消息卸载到一个文件中,然后您可以将该文件移动到您的 TEST 环境中,然后将消息加载到 TEST 队列中。这是可以做到的 MQ tools 列表。您应该试用的 2 个工具是:MQ Batch Toolkit 和 QLoad。
就个人而言,我会创建一个计划任务 (CRONTAB) 运行 每晚午夜关闭消息,我会让文件名包含日期和时间。脚本的最后一步是 zip/compress 文件并删除原始文件(因为您卸载的数据可能很大)。
因此,任何时候您需要特定日期的 PROD 消息,只需将文件复制到您的 TEST 服务器,然后 unzip/uncompress 并将其加载到队列中。
问题:
是否可以将 MQ 消息从一个队列 Manager/Queue 复制到另一个队列 Manager/Queue?
场景:
我有一个 "PROD" 队列管理器,当它在其队列上收到消息时,我想 "copy" 将消息发送到 "TEST" 队列管理器上的队列。
要求
- 原始消息必须保留在 PROD 队列中才能正常处理。
- 这必须是一个自动化过程(一天中有很多消息)。我无法逐条消息进行干预。
- 如果可能的话,我希望通过一些本机 MQ 功能而不是临时的 program/script。
- 复制必须尽可能接近实时
- 必须使用 MQ 版本 7.0.2.1(!)。这无法更改。
- 必须 运行 在 Red Hat Enterprise Linux 服务器版本 5.11 (Tikanga) 上。同样,无法更改。
我不是 MQ 专家所以请使用小词
提前致谢
您只需要 mqadmin 员工和这个 technote
gouda 指出的 technote 的唯一问题是 MQ 将 modify/changed 复制每条消息的 MsgId 和 CorrelId。
如果 MsgId and/or CorrelId 字段很重要,那么唯一的其他选项是复制消息的 MQ API 出口。您可能需要像 MQ Message Replication.
这样的商业产品下一个问题是如何将消息从 PROD 队列移动到 TEST 队列?您绝对不想在 PROD 队列管理器和 TEST 队列管理器之间创建通道。
有很多工具可以将 PROD 消息卸载到一个文件中,然后您可以将该文件移动到您的 TEST 环境中,然后将消息加载到 TEST 队列中。这是可以做到的 MQ tools 列表。您应该试用的 2 个工具是:MQ Batch Toolkit 和 QLoad。
就个人而言,我会创建一个计划任务 (CRONTAB) 运行 每晚午夜关闭消息,我会让文件名包含日期和时间。脚本的最后一步是 zip/compress 文件并删除原始文件(因为您卸载的数据可能很大)。
因此,任何时候您需要特定日期的 PROD 消息,只需将文件复制到您的 TEST 服务器,然后 unzip/uncompress 并将其加载到队列中。