我如何设置MQ以便收到的每条消息都立即写入文件系统? 我有“红皮书”,但至少需要有人至少指点我书中的章节或标题来弄明白。
我们是一家.NET商店。我已经通过API编写了C#来读取队列,我们目前使用的是BizTalk MQ适配器。我们的最终目标是将相同的消息写入文件系统中的多个目录,以“克隆”我们各种测试环境(DEV,STAGE,TRAINING等)的feed。 BizTalk的问题在于,当我们使用消息时,我们将它同时映射到新消息,因此消息已经更改,我们希望克隆原始原始消息,而不是变形消息。我们的供应商不提供Feed的多个副本,例如,他们提供DEV和PROD,但我们内部有4个系统。
我想我可以做一个C#Windows服务来做这件事,但如果可能的话我宁愿使用MQ的内置功能。
答案 0 :(得分:2)
无需配置。如果消息是持久的,WMQ会将其写入磁盘。但是,我认为这不会对您有所帮助,因为它们不是作为离散消息编写的。没有要复制的磁盘文件,只有复制的QMgr与主服务器相同且在复制期间处于脱机状态时,复制才有效。
此问题有很多解决方案,但从WMQ V7开始,最简单的方法是使用内置的Pub / Sub功能。这假设消息是通过QMgr到QMgr通道到达并登陆队列然后使用它们。
在这种情况下,可以删除队列并在主题上创建同名别名。然后,您可以创建一个新队列并定义一个管理订阅,该订阅将有关该主题的消息传递到新队列中。您的应用程序将从新队列中消耗。
当您需要将订阅源发送到另一个QMgr或应用程序时,请定义新订阅并将其指向新的目标队列。由于这是Pub / Sub,因此MQ将像订阅一样多次复制原始消息,并且第一个应用程序及其消息不受影响。如果无法通过MQ通道访问您需要发送到的目标(例如,DEV和QA未连接),您可以将消息传递到新队列,使用SupportPac MO03中的QLoad将它们写入一个文件然后使用另一个QLoad实例将它们加载到另一个QMgr上。如果您想实时移动它们,可以从SupportPac MA01设置Q程序,将它们直接从QMgr1上的新订阅队列移动到QMgr2上的目标队列。您可以根据需要在尽可能多的系统中进行复制。
SupportPacs主页为here。
如果您使用的只是红皮书,您可能需要查看Infocenters。请务必使用与您正在使用的WMQ版本匹配的信息中心。