【问题标题】:IBM WebSphere MQ Triggering issueIBM WebSphere MQ 触发问题
【发布时间】:2015-01-06 13:04:08
【问题描述】:

我正在尝试实现以下场景 当新消息到达队列管理器时,它应该会自动触发我的控制台应用程序。然后它将获取该消息并将该消息写入文件。我已经完成了这部分。但我在触发消息队列时遇到问题

这是我配置消息队列的方式

我创建了两个队列,一个称为 LocalQueue,另一个是 InitQueue,即 SYSTEM.DEFAULT.INITIATION.QUEUE。

并在我的 LocalQueue 中设置“触发器”属性

然后创建触发器监视器

在流程定义对象中,我设置了我的控制台应用程序路径

所以我的问题是,它没有按预期工作,我检查了我的客户端计算机 C:\Program Files (x86)\IBM\WebSphere MQ\errors\AMQERR01.LOG 和服务器机器 C:\Program Files (x86)\IBM\WebSphere MQ\errors 日志文件。我在他们身上找不到任何东西


更新 根据莫拉格的回答,我更改了我的进程名称

【问题讨论】:

标签: triggers ibm-mq


【解决方案1】:

您似乎在队列属性中命名了您的TriggerMonitor 服务对象,您应该在其中放置进程对象名称FetchMessages

【讨论】:

  • 嗨莫拉格 感谢您的回复。我将进程名称更改为“FetchMessages”并添加了一条新消息。但我没有把那条消息写进我的文件。我检查了我的本地和服务器错误文件夹。他们也没有任何信息。所以你能不能给我一些想法来解决这个问题。谢谢你。我更新了我的问题。
【解决方案2】:

您的触发器监视器服务对象的Start Args 似乎告诉触发器监视器监视LocalQueue 而不是InitQueue

【讨论】:

  • tx 我将该属性更改为 -m TriggerTest -q InitQueue
  • 哦,是的,多亏了你和 Shashi,我设法得到了一个可行的解决方案,但有一个小问题......目前我正在从命令提示符运行触发器监视器。即使我在“启动命令”属性中设置了 runmqtmc.exe,它也将“服务状态”显示为正在停止。有没有办法让这个 runmqtmc 在不启动 cmd 的情况下在 windows 上作为后台服务运行?
  • 我认为这需要一个新问题,否则它会被埋在这个问题中,以后其他人都找不到它,所以我创建了这个问题并在这里回答了 stackoverflow.com/questions/26918309/…
  • 我将服务类型更改为服务器并启动了服务,但它仍然显示服务类型 = 已停止。请查看图片drive.google.com/file/d/0B5ujSxOUw0-pODdlbmVrOEh3ZUk/…
  • 当时其他 exe 是否还在运行?我认为你不能让两个具有相同的 exe 以使其能够分辨状态。
【解决方案3】:

您需要确保触发器监视器正在运行并且已在 INPUT(即 GET)模式下打开了启动队列。只有这样队列管理器才会将触发消息放入启动队列。以下是我为使其正常工作所做的工作:

除了服务,我和你一样做了设置。我手动启动 runmqtmc as

   SET MQSERVER=<channel name>/TCP/<connname>
   runmqtmc -m <qmname> -q <initq>

将测试消息放入本地队列。这触发了一个事件,我的应用程序启动了。

【讨论】:

  • 非常感谢,我按照您的建议运行了这个 runmqtmc SET MQSERVER=SVRCOMMUNICATION/TCP/192.168.10.2(1436) runmqtmc -m TriggerTest -q InitQueue 并将我的触发器类型更改为“Every”现在我'我能够将消息写入我的文件。我想知道没有其他方法可以在“启动命令”属性上设置此命令吗?我将“服务类型”设置为“命令”,但它始终显示服务状态 = 已停止
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-07
  • 1970-01-01
  • 2012-09-06
相关资源
最近更新 更多