Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 轮询IBM Websphere消息队列_.net_Architecture_Ibm Mq - Fatal编程技术网

.net 轮询IBM Websphere消息队列

.net 轮询IBM Websphere消息队列,.net,architecture,ibm-mq,.net,Architecture,Ibm Mq,要求:构建一个基于.NET的应用程序,该应用程序可以定期从IBM Websphere消息队列读取消息,并将这些消息保存在数据库中 我的解决方案:我创建了一个windows服务应用程序,以一定的间隔轮询消息队列并处理数据 轮询的问题是应用程序进程被轮询间隔延迟。我不能将间隔设置得太短,因为我不确定消息队列中会有多少数据,以及需要多长时间来处理 问题:使用.NET处理来自WebSphere消息队列的数据的更好方法是什么?一旦数据到达消息队列,我将如何处理这些数据?您需要的是异步消息传递。这通过注册回

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

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

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


问题:使用.NET处理来自WebSphere消息队列的数据的更好方法是什么?一旦数据到达消息队列,我将如何处理这些数据?

您需要的是异步消息传递。这通过注册回调来实现,当消息可用时,MQ客户端将调用回调。请查看知识中心页面:


您需要使用IBM.NET消息服务客户端(又称XMS.NET)。该客户机提供消息侦听器功能(基本上是一个回调,如上面提到的Tim)。当符合使用者选择条件的消息到达队列时,将调用消息侦听器

如果您使用的是MQV7.1或更高版本,那么XMS.NET将与MQ客户端一起安装。如果您使用的是较低版本,则需要下载支持包。您需要在应用程序中引用IBM.XMS程序集。产品附带的示例演示了许多功能,包括消息侦听器


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

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