Java消息服务JMS

一、JMS规范

  JMS是Java消息服务(Java Message Service)应用程序接口的简写,是一个Java平台中关于面向消息中间件(MOM)的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等。用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

  JMS规范包含如下元素:

  • JMS提供者:实现JMS接口和规范的消息中间件,即我们的搭建的MQ服务器(比如rabbitMQ\Kafka\ActiveMQ)。
  • JMS生产者:创建并发送JMS消息的客户端应用。
  • JMS消费者:接收和处理JMS消息的客户端应用。
  • JMS消息:在JMS生产者和消费者之间传递的数据对象。
  • JMS队列:点对点模型的消息发送机制,存储JSM消息的数据结构。
  • JMS主题:发布订阅模型的消息发送机制。
  JSM消息包含消息头、消息体、消息属性三部分,消息头包含一些识别信息和路由信息,消息体封装的是具体的消息内容,消息属性包含以下消息额外的信息。
  1. 消息头标准属性: 
  • JMSDestination:消息发送的目的地,主要是指Queue(队列)和topic(主题),自动分配。
  • JMSDeliveryMode: 消息传送模式,PERSISTENT(持久化)、NON_PERSISTENT(非持久化)。
  • JMSExpiration:消息过期时间(时间戳)。
  • JMSPriority:消息优先级,0-4是普通消息,5-9是加急消息。
  • JMSMessageId: 唯一识别每个消息的标志,由JMS provider产生,自动分配。
  • JMSTimestamp:一个JMS provider在调用send()自动设置的,它是消息被发送和接收的实际时间搓。自动分配。
  • JMSCorrelationId:用来连接到另外一个消息。
  • JMSReplyTo: 提供本消息回复消息的目的地,由开发者设置。
  • JMSType: 消息类别的识别符,由开发者设置。
  • JMSRedelivered:消息的重发标志,false代表该消息是第一次发送,true代表该消息为重发消息。

  2.标准消息属性:

  • 应用程序设置的属性。
  • JMS定义的属性:JMSXUserID、JMSXAppID、JMSXDeliveryCount、JMSXGroupID、JMSXGroupSeq、JMSXProducerTXID、JMSXConsumerTXID、JMSXRcvTimestamp、JMSXState。
  • JMS提供商特定的属性。

  3.消息体:JMS中定义了5种消息体,即ByteMessage、MapMessage、ObjectMessage、StreamMessage和TextMessage。

二、JMS消息传递模型

  JMS消息的传递有点对点队列模式和发布订阅模式,点对点模式下多个消费者之间是竞争关系,一个消息只能由一个消费者处理。发布订阅模式下,消息发布者将消息发送到topic,JMS提供者会将这些信息投递给topic订阅者,订阅者之间共享消息数据。

 

三、JMS编程模型

  • ConnectionFactory(连接工厂):负责创建到JMS提供者的连接。
  • Connection(连接):用于创建会话。
  • Session(会话):创建目的地、生产者、消费者、消息。
  • Destination(目的地):消息发送目标。
  • MessageProducer(消息生产者):发送消息。
  • MessageConsumer(消息消费者):接收和处理消息。
  • Message(消息):传递的内容主体。

 

 

posted @ 2024-03-02 18:36  我若安好,便是晴天  阅读(5)  评论(0编辑  收藏  举报