在阅读Java Message Service
这本书时,我遇到了下面的一行,我无法理解:
pub / sub和p2p模型的另一个主要区别是, 使用pub / sub模型时,将应用消息选择器 消息被复制到每个订户;而对于p2p模型, 消息添加到后应用消息选择器 队列中。
我理解pub / sub它说:在代理向订阅者发送消息之前它应用消息选择器但是对于点对点(队列)假设2个接收者已经注册了消息而不是应用消息选择器? / p>
答案 0 :(得分:1)
pub / sub和p2p模型的另一个主要区别是, 使用pub / sub模型时,将应用消息选择器 邮件将复制到每个订阅者。
由于pub / sub向所有订阅者发送消息,如果订阅者处的选择器与消息不匹配,则消息可能会丢弃在订阅者处。代理不关心哪些订阅者基于选择器接收消息,因为pub / sub按设计传递给所有订阅者。根据那段摘录,这是我的看法。
...而对于p2p模型,消息选择器在应用之后应用 消息已添加到队列中。
对于队列,经纪人必须保证任何给定消息的“一次性”交付,因此选择首先发生在经纪人方面。假设我们有3个消费者在同一队列上进行侦听,并且他们都有相同的选择器。在这种情况下,经纪人选择一个消费者,并仅将消息传递给该消费者。如果没有消费者拥有与消息匹配的选择器,则代理会保留消息,直到找到消费者,或者直到消息过期。