JMS消息传递类型特点介绍

Posted wangju

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMS消息传递类型特点介绍相关的知识,希望对你有一定的参考价值。

对于消息的传递有两种类型:

一种是点对点的,即一个生产者和一个消费者一一对应;

 技术图片

另一种是发布/ 订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进

行接收。

    技术图片

 

 特点介绍:

点到点模型
点对点传递模型:生产者发送消息到一个特定的队列(Queue)中,而消费者从一个消息队列中得到消息,如下图所示:

点对点模型的特点:

Ø  每条消息有一个消费者

      每条只有一个消费者,如果一条消息被消息者接收,那么其他的消费者就不能得到这条消息了。

Ø 发送和接受消息与时间没有关系

      也就是说,生产者在发送消息后,消费者可以在任意的时刻接收,但有两个前提:

            1、消息未过期

            2、消息没有被其他的用户接收

      消费者也可以先运行,当生产者一运行,将消息发送到队列中,消费者即可从队列中获得消息,这叫“守株待兔“。

Ø  消费者必须确认对消息的接收

      收到消息后消费者必须确认消息已被接收,否则JMS服务提供者会认为该消息没有被接收,那么这条消息仍然可以被其他人接收。程序可以自动进行确认,不需要人工干预。

Ø  非持久的消息最多只发送一次

      非持久的消息最多只发送一次,表示消息有可能未被发送,造成未被发送的原因可能有:

            1、 JMS服务提供者出现宕机等情况,造成非持久信息的丢失

            2、 队列中的消息过期,未被接收

Ø  持久的消息严格发送一次

      我们可以将比较重要的消息设置为持久化的消息,持久化后的消息不会因为JMS服务提供者的故障或者其他原因造成消息丢失。

发布/订阅模型
      发布/订阅模型:发布/订阅传递消息类型与主题(Topic)有关。生产者发布消息,而消费者订阅感兴趣的消息,生产者将消息和一个特定的主题(Topic)连在一起,消息传递系统(MOM)根据消费者注册的兴趣,将消息传递给消费者。这种类型非常类似出版报纸、杂志的形式,如下图所示:

发布/订阅模型的特点:

Ø  每个消息都可以有多个(0,1,……)订阅者

      每条消息可以有多个消费者,如果报纸和杂志一样,谁订阅了谁都可以获得。

Ø  订阅者只能消费他们订阅之后出版的消息

      这就要求订阅者必须先订阅,生产者再发布。即订阅者必须先运行,再等待生产者的运行,这和点对点类型有所差异。

Ø  订阅者必须保持为活动状态才能使用这些消息

      即订阅者必须保持活动状态等待发布者发布的消息,如果订阅者在发布者发布消息之后才运行,则不能获得先前发布者发布的消息。

以上是关于JMS消息传递类型特点介绍的主要内容,如果未能解决你的问题,请参考以下文章

消息中间件ActiveMQ及Spring整合JMS的介绍

在事务提交之前传递 JMS 消息

如何找到未传递的 JMS 消息的原始目的地。

Mule ESB HornetQ JMS 消息未传递

JavaEE- 带有 JMS 和 MDB 的消息传递系统

Spring JMS(ActiveMQ) 延迟消息传递