JMS 中的点对点模型与发布/订阅模型

2022-09-02 03:26:47

我是 JMS 的新手。我从“hello world”开始,我在Topic上发布来自java应用程序的消息,并从客户端(node.js Javascript)收听它。我已经浏览了这个维基百科条目,但是根据我以前的理论理解,我有一些问题。

根据我的理解,点对点是队列实现,其中最多可以在队列上订阅一个使用者,并且只能由该使用者使用。生产者和消费者都不知道彼此。Queue托管在我的例子Apache ActiveMQ的消息代理上。队列可以由生产者在发布消息之前创建(也可以提前从控制台创建)。

在发布/订阅模型的情况下,它与点对点几乎相同,除了我们使用主题而不是队列。在这个模型中,这个主题上可以有更多的消费者。发布消息后,将通知所有订阅者。现在,如果任何订阅者发送已发布消息的确认,消息将被视为已使用,并且它将不再可供新订阅者使用?


答案 1

点对点意味着消息通过队列从一个应用程序(创建者或发送者)发送到另一个应用程序(消费者/接收者)。一个队列中可以有多个使用者在侦听,但只有其中一个使用者将获得消息。因此,它是点对点或一对一。

另一方面,发布/订阅是另一种消息传递模型,其中消息(或通常称为发布)通过主题发送给多个消费者(或订阅者)。主题是发布者和订阅者之间的链接。订阅者可能会也可能不会确认已发布的消息。像 JMS 这样的实现将消息确认为消息传递提供程序,但不确认消息的发送者。出版物将由所有订阅者接收,无论是持久的还是非持久的。同一主题上的任何新订户都不会获得该发布,除非它是“保留”发布。

我建议您进一步阅读,

  1. 持久订阅
  2. 非持久订阅
  3. 保留出版物

答案 2

推荐