`
zc985552943
  • 浏览: 287366 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Babe4ca6-5e6f-33aa-9078-762ee3ccfb7e
云计算--hadoop
浏览量:11490
5e98c2c1-2a82-3388-bc80-7fca0170bb12
redis解说
浏览量:26649
088014c7-4d3f-39ce-b72e-4ebe7046a134
MongoDB读书笔记
浏览量:15634
D2b74847-c860-3e26-96fe-3fa4498d6348
Maven读书笔记
浏览量:26690
688db20f-402d-3a1d-8188-d6153d6c7465
Java通信
浏览量:13399
社区版块
存档分类
最新评论

06_Java通信_JMS_详解消息

阅读更多

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

前期回顾:05_Java通信_JMS_demo

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


 

消息头

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

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


 

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对象中,提供了多种类型的属性。属性如下



 

JMS定义的属性

JMS厂商提供特定属性

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

消息类型(有效负载)

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



 PS:上面划的是Message接口,其他5个都是类。其实其他5个也是接口!

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

  • 大小: 20.9 KB
  • 大小: 34.7 KB
  • 大小: 36.5 KB
  • 大小: 71.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics