【问题标题】:Polling IBM Websphere Message Queue轮询 IBM Websphere 消息队列
【发布时间】:2015-07-08 08:05:26
【问题描述】:

要求:构建一个基于 .NET 的应用程序,该应用程序可以定期从 IBM Websphere Message Queue 读取消息并将这些消息保存在数据库中

我的解决方案:我创建了一个 Windows 服务应用程序,它以一定的时间间隔轮询消息队列并处理数据。

轮询的问题是应用程序进程被轮询间隔延迟。我不能将间隔设置得太短,因为我不确定消息队列中会有多少数据以及处理需要多长时间。

问题:使用 .NET 处理来自 WebSphere Message Queue 的数据的更好方法是什么?数据到达消息队列后如何处理?

【问题讨论】:

  • 为什么应用程序不遵循 GET 的通常模式等待?
  • @T.Rob 不确定您的意思。应用程序当前等待 30 秒,然后从 MQ 获取并处理消息。
  • 问题说“应用程序进程被轮询间隔延迟”。通常,应用程序发出一个GET 并指定一个WAIT 间隔。当消息到达时,延迟为零,因为应用程序正在等待它。如果WAIT 过期,应用程序将获得RC=2033 并与另一个GETWAIT 循环返回。但是,如果应用程序发出 GET 而没有 WAIT,然后休眠 30 秒,则应用程序休眠时会有很长的延迟。

标签: .net architecture ibm-mq


【解决方案1】:

您需要的是异步消息传递。这通过注册回调来工作,MQ 客户端随后将在消息可用时调用该回调。查看知识中心页面:

http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q023050_.htm

【讨论】:

    【解决方案2】:

    您需要使用IBM Message Service Client for .NET (a.k.a. XMS .NET)。该客户端提供消息监听器功能(基本上是上面提到的 Tim 的回调)。当符合消费者选择条件的消息到达队列时,将调用消息侦听器。

    如果您使用 MQ v7.1 或更高版本,则 XMS .NET 与 MQ 客户端一起安装。如果您的版本较低,则需要下载IA9H 支持包。您将需要在应用程序中引用 IBM.XMS 程序集。样品随产品一起提供,用于演示包括消息侦听器在内的多种功能。

    查看产品随附的 SimpleAsyncConsumer.cs 示例以了解详细信息。

    【讨论】:

      猜你喜欢
      • 2013-10-20
      • 2016-09-11
      • 2016-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多