3

这是基于MQ (Websphere 7) 将消息持久化到文件系统的后续。

您如何设置 MQ 支持包(例如 MA01 中的 Q 实用程序)中的 .exe 程序以在每次收到消息时执行?这可以在 MQ Explorer 中设置吗?(我们在 Windows 2008/R2 上使用 7.0)。

4

1 回答 1

3

有几种方法可以做到这一点。

  1. 在 Windows 控制下设置应用程序(因为您提到 QMgr 在 Windows 上。)该应用程序将作为服务运行,如果服务失败,可以使用恢复选项重新启动它。应用程序将被编程(或在 Q 的情况下配置)以使用具有非常长的等待期的 GET 来处理队列。当 QMgr 不可用时,需要一些额外的错误处理来做一些明智的事情。这非常适合将消息复制到多个队列,但不适用于队列到文件,因为文件永远不会关闭。
  2. 将应用程序作为 WebSphere MQ 服务运行。定义SERVICE对象 usingCONTRIL(QMGR)会导致 MQ 在 QMgr 启动时启动服务,并在 QMgr 关闭时停止它。由于该服务是 QMgr 的子进程,因此无需担心当 QMgr 不可用时如何处理错误。
  3. 基于非零队列深度触发程序。定义一个描述要执行的命令的进程对象,启用对队列TRIGTYPE(FIRST)的触发并运行一个触发器监视器。只要队列的深度 > 0 且没有打开的输入句柄,进程对象就会触发并执行命令。你开始的东西必须知道如何解析命令行,所以如果你有其他人的可执行文件,最简单的事情就是使用脚本来启动它。该脚本解析触发消息并触发可执行文件。或者脚本可能会忽略触发消息而只运行 exe。我通常使用 Korn Shell 或 Perl,两者都可以在 Windows 上使用。

我写了一篇文章,展示了如何使用 Q 的触发版本来防止事件队列被填充。文章假设您希望队列保持大部分已满,因此使用大约 80% 的深度触发。当队列深度变为非零时,可以使用相同的技术(顺便说一下,在更简单的实现中)启动 Q 程序。

更新
可能应该链接文章。;-)
任务:消息传递:使用循环队列简化管理和调试

于 2012-11-13T21:23:39.687 回答