MSMQ 上是不是有任何事件或回调将新消息添加到队列中

Posted

技术标签:

【中文标题】MSMQ 上是不是有任何事件或回调将新消息添加到队列中【英文标题】:is there any event or callback on MSMQ for new message added to queueMSMQ 上是否有任何事件或回调将新消息添加到队列中 【发布时间】:2012-07-11 08:07:52 【问题描述】:

我有两个组件。一个是窗口应用程序,另一个是窗口服务。 窗口应用程序写入消息队列 (MSMQ),服务正在读取它并处理消息。 服务是否应该一直在排队等待新消息...就代码而言,我应该 使用无限 while 循环或 Timer 或队列上是否有任何事件或回调以将新消息添加到队列?这样当窗口应用程序向队列添加新消息时,Service 可以知道。 这就是我要使我的应用程序高效的所有要求,因此如果有任何其他方法可以实现这一点,您可以提出建议。 感谢阅读

【问题讨论】:

【参考方案1】:

您不需要任何事件或循环。 Receive 方法将从队列中读取,如果队列为空,它将阻塞,直到添加新消息。如果在此期间需要做其他事情,请将接收代码放在单独的线程中。

您还可以使用BeginReceive 来使用异步方法。当从队列中读取消息时,这实际上会引发一个事件。

【讨论】:

以上是关于MSMQ 上是不是有任何事件或回调将新消息添加到队列中的主要内容,如果未能解决你的问题,请参考以下文章

MSMQ 控制台显示消息计数,但没有私有队列的消息

MSMQ 在 Azure 上是不是可用

WCF基于MSMQ的事件代理服务

将新数据添加到实时数据库是不是有任何错误?

MSMQ 无法删除或清除队列

OpenSSL 是不是有任何“读取”数据的事件回调函数?