我刚刚开始讨论MSMQ,到目前为止,它看起来并不特别复杂。我已经完成了一些关于MSDN的文章,并且我成功地实现了一个生产者,它将消息传递到远程机器上的私有队列和处理这些消息的远程计算机上的使用者。没问题。
现在,我只想在前进之前确保了解MSMQ的基本工作原理(或者一般情况下是队列)。
首先,是否有指定消息接收方的概念?换句话说,如果我有两个用户轮询同一个队列,那么每个用户是否只是抓取队列前面的任何消息并对其进行处理,还是生产者可以指定某个特定消息的使用者?我应该搜索哪些关键字或在MSDN上查找更多有关这方面的内容?
第二,是否有一个由所有消费者处理的信息发送概念,而不仅仅是第一个收到的信息?举个简单的例子,假设公司的接待员在她的电脑上有一位制作人,她可以用它通知公司的其他成员(通过把一条信息推到队列中),三明治女士已经到了。任何有兴趣的员工都会有一个消费者在他们的电脑上运行,他们会看到这条信息,但不会删除它,以便其他消费者也能看到它。再说一遍,我在谷歌上能读到更多关于这方面的内容吗?
最后,每个实现是否总是由一个或多个生产者和一个或多个使用者组成?如果您只有两台需要发送消息的机器,怎么办?您通常设置两个队列(A和B),并且在机器1上实现队列A的生产者和队列B的使用者,而机器2为队列B获得生产者和队列A的使用者,或者有更好的方法来实现这一点?
发布于 2015-08-28 08:32:57
首先,是否有指定消息接收方的概念?
不,没有路由或其他行为可以提供这一点。生产者和使用者是完全解耦的,而且MSMQ不支持任何类型的条件消息去队列。
...is有一个发送消息的概念,它将由所有消费者处理,而不仅仅是接收到的第一个消息?
同样,没有内置的"publisher“功能。
...does每个实现总是由一个或多个生产者和一个或多个使用者组成?
是的,这是正确的。MSMQ只支持单向消息传递,因此消息交换中涉及的任何消息端点都需要一个要读取的队列和一个要发送的队列。按照约定,消息交换参与者将发送到远程队列并从本地队列接收。
我想,您所问的问题表明了一种期望,即排队平台应该提供多个单向异步消息,但我不同意。MSMQ更像是一个传输层,而不是一个成熟的消息传递系统,但是它是构建您所追求的那种企业特性的非常可靠可靠的的基础。
例如,WCF围绕MSMQ提供了一个请求/响应包装器,它允许双向通信.
NServiceBus为MSMQ带来了请求/响应和发布/订阅消息传递模式(尽管这是一种高消息量/扩展的付费产品)。
https://stackoverflow.com/questions/32266095
复制相似问题