JMS

  最近在学习消息中间件,写下博客进行总结一下。

  JMS的全称是Java Message Service,即Java消息服务。它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息。把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑。对于消息的传递有两种类型,一种是点对点的,即一个生产者和一个消费者一一对应;另一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收。

  点对点模型的特点:

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

  (2)消息发送者和接收者并没有时间依赖性,消费者也可以先运行,当生产者一运行,将消息发送到队列中,消费者即可从队列中获得消息。也就是说,生产者在发送消息后,消费者可以在任意的时刻接收,但有两个前提:1 消息未过期 2 消息没有被其他的用户接收。

  (3)当接收者收到消息的时候,会发送确认收到通知(acknowledgement)。

  发布-订阅模式的特点:

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

  (2) 订阅者必须先运行,再等待生产者的运行,这和点对点类型有所差异。

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

  JMS中,消息的接收可以有两种方式:

  (1)同步接收:使用同步方式接收消息的话,消息订阅者调用receive()方法。在receive()中,消息未到达或在到达指定时间之前,方法会阻塞,直到消息可用。

  (2)异步接收:使用异步方式接收消息的话,消息订阅者需注册一个消息监听者,类似于事件监听器,只要消息到达,JMS服务提供者会通过调用监听器的onMessage()递送消息。

  JMS应用程序由如下基本模块组成:

  (1)管理对象(Administered objects)-连接工厂(Connection Factories)和目的地(Destination)

  (2)连接对象(Connections)

  (3)会话(Sessions)

  (4)消息生产者(Message Producers)

  (5)消息消费者(Message Consumers)

  (6)消息监听者(Message Listeners)

  如下图所示:

  

原文地址:https://www.cnblogs.com/gdpuzxs/p/6618659.html