ActiveMQ之JMS介绍、落地产品与组成的四大元素
JMS
JavaEE是一套使用Java进行企业级应用开发的大家一致遵循的13个核心规范工业标准。JavaEE平台提供了一个基于组件的方法来加快设计、开发、装配及部署企业应用程序。
- JDBC(java Database Connectivity)
- JNDI(Java Name and Directory Interface)
- EJB(Enterprise JavaBean)
- RMI(RemoteMethod Invoke)
- Java IDL(接口定义语言)/CORBA
- JSP(Java Server Pages)
- Java Servlet
- XML(Extensible Markup Language)
- JMS(Java Message Service)
JMS是用于和面向消息的中间件相互通信的应用程序接口(API)。它既支持点对点的域,也支持发布/订阅类型的域,并且提供对下列类型的支持:经认可的消息传递,事务性消息传递,一致性消息和具有持久性的订阅者的支持。
- JTA(Java Transaction Architecture)
- JTS(Java Transaction Service)
- JavaMail
- JAF(JavaBeans Activation Framework)
JMS(Java Message Service)Java消息服务,就是指两个应用程序之间进行异步通信的接口(API),它为标准消息协议和消息服务提供了一组通用的接口,包括创建、发送、读取消息等,用于支持Java应用程序开发。
JMS组成的四大元素
JMS provider
实现JMS接口和规范的消息中间件,也就是我们说的MQ服务器。
JMS producer
消息生产者,创建和发送JMS消息的客户端应用
JMS consumer
消息消费者,接收和处理JMS消息的客户端应用
JMS message
消息头
-
JMSDestination
消息发送的目的地,主要指Queue同Topic -
JMSDeliveryMode
设置持久和非持久模式。
一条持久性消息:应该被传送“一次仅仅一次”,这就意味着如果JMS提供者出现故障,该消息并不会丢失,它会在服务器回复之后再次被传递。
一条非持久消息:最多会传送一次,这意味着服务器出现故障,该消息将永远丢失。 -
JMSExpiration
可以设定消息在一定时间后过期,默认永不过期。
消息过期时间,等于Destination的send方法中的timeToLive值加上发送时刻的GMT时间值。
如果timeToLive值等于0,则JMSExpiration被设置为0,表示消息永不过期。如果发送后,在消息过期时间之后消息还没有被发送到目的地,则消息被清除。 -
JMSPriority
消息优先级,从0-9十个级别,0到4普通消息,5到9是加急消息。
JMS不要求MQ严格按照这十个优先级发送消息,但必须保证加急消息要先于普通消息到达,默认是4级。
JMSMessageID
唯一识别每个消息的标识,由MQ产生。扫描二维码关注公众号,回复: 13118471 查看本文章
消息体
- 封装具体的消息数据。
- 发送和接受的消息体类型必须一致对应.
- 5种消息体格式:
TextMessage : 普通字符串消息,包含一个string。
MapMessage : 一个Map类型的消息,key为string类型,而值为Java的基本类型。
BytesMessage : 二进制数组消息,包含一个byte[]。
StreamMessage : Java数据流消息,用标准流操作来顺序的填充和读取。
ObjectMessage : 对象消息,包含一个可序列化的Java对象。
消息属性
如果需要除消息头字段以外的值,那么可以使用消息属性。
识别/去重/重点标注等操作非常有用的方法
是什么?
他们时异属性名和属性值对的形式定制的。可以将属性视为消息的扩展,属性指定一些消息头没有包括的附加信息,比如可以在属性里指定消息选择器。
消息的属性就像可以分配给一条消息的附加消息头一样。他们允许开发者添加有关消息的不透明附加消息。
他们还用于暴漏消息选择器在消息过滤时使用的数据。