从Websphere-MQ调用.EXE

时间:2012-11-13 21:00:11

标签: ibm-mq

这是基于MQ (Websphere 7) persist message to file system的后续行动。

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

1 个答案:

答案 0 :(得分:3)

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

  1. 在Windows控制下设置应用程序(因为您提到QMgr在Windows上。)该应用程序将作为服务运行,如果服务失败,还可以使用恢复选项重新启动它。应用程序将被编程(或在Q的情况下配置)以使用具有非常长的等待时间的GET来处理队列。当QMgr不可用时,需要一些额外的错误处理来做一些合理的事情。这非常适合将消息复制到多个队列,但不适合队列到文件,因为文件永远不会关闭。
  2. 将应用程序作为WebSphere MQ服务运行。使用SERVICE定义CONTRIL(QMGR)对象会导致MQ在QMgr启动时启动服务,并在QMgr关闭时停止服务。由于该服务是QMgr的子进程,因此无需担心在QMgr不可用时如何处理错误。
  3. 根据非零队列深度触发程序。定义描述要执行的命令的进程对象,在TRIGTYPE(FIRST)的队列上启用触发并运行触发器监视器。每当队列具有深度> 0并且没有打开的输入句柄,进程对象触发并执行命令。你开始的事情必须知道如何解析命令行,所以如果你有别人的可执行文件,最容易做的就是使用脚本来启动它。该脚本解析触发器消息并触发可执行文件。或者脚本可能会忽略触发器消息并只运行exe。我通常使用Korn Shell或Perl,两者都可以在Windows上使用。
  4. 我写了一篇文章,展示了如何使用Q的触发版本来保持事件队列的填充。本文假设您希望队列保持大部分已满,因此使用触发深度约为80%。顺便提一下,当队列深度变为非零时,可以使用相同的技术(在更简单的实现中)来启动Q程序。

    <强>更新
    可能应该把这篇文章联系起来。 ;-)
    Mission:Messaging: Easing administration and debugging with circular queues