ActiveMQ(四):JMS规范

1.JMS是什么

JMS(Java Message Service):Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持Java应用程序开发。在JavaEE中,当两个应用程序使用JMS进行通信时,它们之间不是直接相连的,而是通过一个共同的消息收发服务组件关联起来以达到解耦/异步削峰的效果。在这里插入图片描述

2.消息头

JMS的消息头有以下属性:

  • JMSDestination:消息目的地

  • JMSDeliveryMode:消息持久化模式

  • JMSExpiration:消息过期时间,可以设置消息在一定时间后过期,默认是永不过期。消息过期时间,等于Destination的send方法中的timeToLive值加上发送时刻的GMT时间值。如果timeToLive值等于0,则JMSExpiration被设为0,表示该消息永不过期。如果发送后,在消息过期时间之后还没有被发送到目的地,则该消息被清除。

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

  • JMSMessageID:消息的唯一标识符。唯一标识每个消息的标识。MQ会给我们默认生成一个,我们也可以自己指定。

消息的生产者可以set这些属性,消息的消费者可以get这些属性。
这些属性在send方法里面也可以设置。

3.消息体

消息体是封装具体消息数据,有五种消息体格式。应当注意,发送接收的消息体的格式应该一致。
在这里插入图片描述

4.消息属性

如果需要除消息头字段之外的值,那么可以使用消息属性。他是识别/去重/重点标注等操作,非常有用的方法。
他们是以属性名和属性值对的形式制定的。可以将属性是为消息头得扩展,属性指定一些消息头没有包括的附加信息,比如可以在属性里指定消息选择器。消息的属性就像可以分配给一条消息的附加消息头一样。它们允许开发者添加有关消息的不透明附加信息。它们还用于暴露消息选择器在消息过滤时使用的数据。
调用Message的set*Property()方法,就能设置消息属性。根据value的数据类型的不同,有相应的API。比如:

 textMessage.setStringProperty("From","[email protected]");
  textMessage.setByteProperty("Spec", (byte) 1);
  textMessage.setBooleanProperty("Invalide",true);


 textMessage.setStringProperty("From","[email protected]");
  textMessage.setByteProperty("Spec", (byte) 1);
  textMessage.setBooleanProperty("Invalide",true);

猜你喜欢

转载自blog.csdn.net/qq_41984117/article/details/112850073