3

我将如何设置 MQ 以便收到的每条消息都立即写入文件系统?我有“红皮书”,但至少需要有人至少指出我书中的一章或标题来弄清楚。

我们是一家 .NET 商店。我已经通过 API 编写了 C# 来读取队列,我们​​目前使用 BizTalk MQ 适配器。我们的最终目标是将相同的消息写入文件系统中的多个目录,以“克隆”我们各种测试环境(DEV、STAGE、TRAINING 等)的提要。BizTalk 的问题在于,当我们消费消息时,我们同时将其映射到新消息,因此消息已经更改,我们希望克隆原始原始消息,而不是变形消息。我们的供应商不提供提要的多个副本,例如,他们提供 DEV 和 PROD,但我们内部有 4 个系统。

我想我可以做一个 C# Windows 服务来做到这一点,但如果可能的话,我宁愿使用 MQ 的内置功能。

4

1 回答 1

2

无需配置。如果消息是持久的,WMQ 会将其写入磁盘。但是,我认为这对您没有帮助,因为它们不是作为离散消息编写的。没有要复制的磁盘文件,并且仅当复制的 QMgr 与主 QMgr 相同并且在复制期间处于脱机状态时,复制才有效。

这个问题有很多解决方案,但从 WMQ V7 开始,最简单的一个是使用内置的 Pub/Sub 功能。这假设消息通过 QMgr-to-QMgr 通道到达并到达队列,然后您可以在该队列中使用它们。

在这种情况下,可以删除队列并在主题上创建同名别名。然后,您创建一个新队列并定义一个管理订阅,将主题上的消息传递到新队列中。您的应用从新队列中使用。

当您需要将提要发送到另一个 QMgr 或应用程序时,定义一个新订阅并将其指向新的目标队列。由于这是 Pub/Sub,MQ 将复制原始消息的次数与订阅数量相同,并且第一个应用程序及其消息不受影响。如果您需要发送到的目标无法通过 MQ 通道访问(例如,可能 DEV 和 QA 未连接),您可以将消息传递到新队列,使用SupportPac MO03中的 QLoad 将它们写入文件并然后使用另一个 QLoad 实例将它们加载到不同的 QMgr 上。如果您想实时移动它们,您可以从SupportPac MA01设置 Q 程序将它们直接从 QMgr1 上的新订阅队列移动到 QMgr2 上的目标队列。您可以根据需要在多个系统之间进行复制。

SupportPacs 主页在这里

如果您使用的只是红皮书,您可能想看看信息中心。请务必使用与您正在使用的 WMQ 版本匹配的信息中心。

于 2012-11-08T20:33:43.887 回答