pub / sub中的消息选择器和点对点

时间:2013-11-30 16:08:55

标签: java jms

在阅读Java Message Service这本书时,我遇到了下面的一行,我无法理解:

  

pub / sub和p2p模型的另一个主要区别是,   使用pub / sub模型时,将应用消息选择器   消息被复制到每个订户;而对于p2p模型,   消息添加到后应用消息选择器   队列中。

我理解pub / sub它说:在代理向订阅者发送消息之前它应用消息选择器但是对于点对点(队列)假设2个接收者已经注册了消息而不是应用消息选择器? / p>

1 个答案:

答案 0 :(得分:1)

  

pub / sub和p2p模型的另一个主要区别是,   使用pub / sub模型时,将应用消息选择器   邮件将复制到每个订阅者。

由于pub / sub向所有订阅者发送消息,如果订阅者处的选择器与消息不匹配,则消息可能会丢弃在订阅者处。代理不关心哪些订阅者基于选择器接收消息,因为pub / sub按设计传递给所有订阅者。根据那段摘录,这是我的看法。

  

...而对于p2p模型,消息选择器在应用之后应用   消息已添加到队列中。

对于队列,经纪人必须保证任何给定消息的“一次性”交付,因此选择首先发生在经纪人方面。假设我们有3个消费者在同一队列上进行侦听,并且他们都有相同的选择器。在这种情况下,经纪人选择一个消费者,并仅将消息传递给该消费者。如果没有消费者拥有与消息匹配的选择器,则代理会保留消息,直到找到消费者,或者直到消息过期。