JMS

Posted steakliu

tags:

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

JMS介绍

  JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。JMS是一种与厂商无关的 API,用来访问收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。

  示意图

技术图片

 

 

   JMS组成结构

     1.JMS provider : 实现JMS接口和规范的消息中间件,如ActiveMQ,Kafka等

     2.Producer:消息生产者

     3.Consumer:消息消费者

     4. message:消息(最重要)

        消息头: 

           (1):JMSDestination:消息传递的目的地

 

                         (2):JMSDeliveryMode , 持久模式和非持久模式

            持久性的消息:当消息传递时,MQ宕机了,消息不会丢失,服务器恢复后再次传递

                      非持久化消息:消息最多传递一次,并且服务出现故障后,消息永远丢失

         (3):JMSExpiration:设置消息过期时间,默认永不过期  

         (4):JMSPriority:优先级   

              消息优先级,从0-9十个级别,0-4普通消息,5-9加急消息,JMS不要求MQ严格按照十个级别发送消息,但是必须保证加急消息要优于普通消息到达,默认时4级

         (5):JMSMessageID:唯一识别每个消息的标识(最重要的一个)

技术图片

 

 技术图片

 

      消息体:封装消息的具体内容

技术图片

 

     如:

技术图片

 

     发送和接收的消息必须一致

 

    消息属性:

      如果需要除消息头字段以外的值,那么可以使用消息识别/去重/重点标注等方法

      如某条消息很重要,需要标识

    如:

      Producer

技术图片

 

 

       Consumer

技术图片

 

     结果:

技术图片

 

以上是关于JMS的主要内容,如果未能解决你的问题,请参考以下文章

ActiveMQ——理解和掌握JMS

JMS解析——JMS简介

JMS与ActiveMQ

深入浅出JMS----JMS基本概念

深入浅出JMS--JMS基本概念

深入浅出JMS--JMS基本概念