2012-01-31 80 views
4

我知道实现JMS请求 - 应答机制有不同的方式(或排列),即请求队列和响应队列,请求主题和响应主题,或两者的组合。我想知道的是,(1)推荐的(或最普通的)方式是什么,(2)不同的排列方式如何衡量?实现JMS请求 - 应答。队列vs主题?

接下来,说 a更正确a。 “发送消息到队列”或b。 “通过队列发送消息”?

干杯!

回答

4

通常,使用队列。 “请求”意味着收件人,而不是通知任何关心的人,所以你可能想要一个队列的行为。

队列通常在一件事情上做得更好 - 或者是有限数量的对等事情 - 接收消息并处理它。当重要的是消息实际上传达给处理它的人时,他们倾向于比主题更好地理解持久性模型。 (例如:如果丢弃该消息是一个问题,您可能需要一个队列)

主题更广播导向:说点什么,任何关心的人都会听到它。通常情况下,这与“......没有直接的响应”是一致的,因为“零个或多个听众”模型......好吧,如果你期待响应,零听众总是一个问题。

主题可以做持久性,但规则是陌生人,很少你真正想要的。最后,我认为大多数人会说“到”一个队列,因为队列和处理消息的东西是截然不同的,但实际上,当你传达你的意思时,它并不重要。

+0

+1。试想一下 - “queue = *正好一个用户会收到这个消息”,“topic = *所有用户都会收到这个消息”。 – 2012-01-31 02:24:46

1

此外,通过Queue,您可以让多个订阅者处理邮件,以便构建负载均衡器。一个主题你无法轻松做到这一点。