要求:构建基于.NET的应用程序,该应用程序可以定期从IBM Websphere Message Queue读取消息并将这些消息保存在数据库中
我的解决方案:我创建了一个Windows服务应用程序,它以特定间隔轮询Message Queue并处理数据。
轮询问题是应用程序进程因轮询间隔而延迟。我无法将间隔设置得太短,因为我不确定Message Queue中将有多少数据以及处理所需的时间。
问题:使用.NET从WebSphere Message Queue处理数据的更好方法是什么?如何在到达消息队列后立即处理数据?
答案 0 :(得分:1)
您需要的是异步消息传递。这通过注册回调来工作,MQ客户端将在消息可用时调用该回调。请查看知识中心页面:
http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.dev.doc/q023050_.htm
答案 1 :(得分:1)
您需要使用IBM Message Service Client for .NET (a.k.a. XMS .NET)
。此客户端提供消息侦听器功能(基本上是Tim上面提到的回调)。当符合消费者选择标准的消息到达队列时,将调用消息侦听器。
如果您使用的是MQ v7.1或更高版本,则XMS .NET随MQ客户端一起安装。如果您使用的是较低版本,则需要下载IA9H支持包。您需要在应用程序中引用IBM.XMS程序集。样本随产品一起提供,以演示一些功能,包括Message Listener。
请查看产品随附的SimpleAsyncConsumer.cs示例以获取详细信息。