欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

06_Java通信_JMS_详解消息

程序员文章站 2022-05-09 14:26:49
...

上节使用一个Chat的小例子说明了一下怎么使用ActiveMQ开发一个发布/订阅者模型。

前期回顾:05_Java通信_JMS_demo

这节来详细说一下一条消息的结构。


06_Java通信_JMS_详解消息
            
    
    博客分类: Java通信 JMSmessage详解 

 

消息头

每一个JMS的消息都有一个固定格式的消息头,这些数据被提供set/get方法设置和获取。但是不是所有的消息头数据都需要设置,或者都能设置成功,部分是由JMS实现厂商设置好的。所以我们将这些消息头分为JMS自动分配消息头和开发者设置消息头。

下面是所有消息头的列表:


06_Java通信_JMS_详解消息
            
    
    博客分类: Java通信 JMSmessage详解 

 

JMS自动分配消息头

JMSDestination:获得对象标识目的地:Topic或者queue
JMSDeliveryMode:获得消息的持久模式,如果是持久性,那么JMS提供者出现故障,该消息不会丢失,在服务器恢复后再次传送,非持久模式,如果JMS出现故障,该消息可能永久丢失
JMSMessageID:String类型的值,唯一标识一条消息
JMSTimestamp:在messageProducer在调用send()操作时自动设置,包含JMS提供者接收消息的时间
JMSExpiration:一个message对象的有效期,避免把过期的消息送给消费者
JMSRedelivered:消息被重新传送给消费者,如果该消息被重新传送JMSRedelivered消息头就为true,否则为false
JMSPriority:消息的优先级0-4普通;5-9加急

 

开发者设置消息头

JMSReplyTo:标明了JMS消费者应该应答的地址,在使用请求/应答模型时,通过这条消息头属性可以进一步实现生产者和消费者之间的去耦
JMSCorrelationID:用于将当前消息和先前的某些消息或者应用程序特定的ID关联起来
JMSType:标识消息结构和有效负载类型

 

消息属性

类似于消息头的附加信息,允许开发者添加不透明的附加信息。
类型:

应用程序特定属性

开发者提供,保存在message对象中,提供了多种类型的属性。属性如下


06_Java通信_JMS_详解消息
            
    
    博客分类: Java通信 JMSmessage详解 
 

JMS定义的属性

JMS厂商提供特定属性

以上两种都是厂商提供绑定在消息头的附加信息

消息类型(有效负载)

Message接口是根据它们携带的有效负载种类来定义的
JMS提供了6个接口,来实现不同数据类型的负载


06_Java通信_JMS_详解消息
            
    
    博客分类: Java通信 JMSmessage详解 
 PS:上面划的是Message接口,其他5个都是类。其实其他5个也是接口!

TextMessage表示消息是一个文本格式
StreamMessage表示是流格式
MapMessage表示以键值对的形式传递消息
ObjectMessage消息的信息是一个对象,这个对象必须能够序列化
ByteMessage表示消息是字节流作为有效负载

  • 06_Java通信_JMS_详解消息
            
    
    博客分类: Java通信 JMSmessage详解 
  • 大小: 20.9 KB
  • 06_Java通信_JMS_详解消息
            
    
    博客分类: Java通信 JMSmessage详解 
  • 大小: 34.7 KB
  • 06_Java通信_JMS_详解消息
            
    
    博客分类: Java通信 JMSmessage详解 
  • 大小: 36.5 KB
  • 06_Java通信_JMS_详解消息
            
    
    博客分类: Java通信 JMSmessage详解 
  • 大小: 71.4 KB
相关标签: JMS message详解