1. JMS消息模型
JMS消息由以下几部分组成:消息头,属性,消息体。
1)消息头(Header)
消息头包含消息的识别信息和路由信息,消息头包含一些标准的属性如:JMSDestination,JMSMessageID 等。
消息头 |
由谁设置 |
JMSDestination |
send 或 publish 方法 |
JMSDeliveryMode |
send 或 publish 方法 |
JMSExpiration |
send 或 publish 方法 |
JMSPriority |
send 或 publish 方法 |
JMSMessageID |
send 或 publish 方法 |
JMSTimestamp |
send 或 publish 方法 |
JMSCorrelationID |
客户 |
JMSReplyTo |
客户 |
JMSType |
客户 |
JMSRedelivered |
JMS Provider |
2)属性(Properties)
除了消息头中定义好的标准属性外,JMS 提供一种机制增加新属性到消息头中,这种新属性包含以下几种:
- 应用需要用到的属性;
- 消息头中原有的一些可选属性;
- JMS Provider 需要用到的属性。
标准的JMS 消息头包含以下属性:
- JMSDestination --消息发送的目的地
- JMSDeliveryMode --传递模式,有两种模式: PERSISTENT 和NON_PERSISTENT,PERSISTENT 表示该消息一定要被送到目的地,否则会导致应用错误。NON_PERSISTENT 表示偶然丢失该消息是被允许的,这两种模式使开发者可以在消息传递的可靠性和吞吐量之间找到平衡点。
- JMSMessageID 唯一识别每个消息的标识,由JMS Provider 产生。
- JMSTimestamp 一个消息被提交给JMS Provider 到消息被发出的时间。
- JMSCorrelationID 用来连接到另外一个消息,典型的应用是在回复消息中连接到原消息。
- JMSReplyTo 提供本消息回复消息的目的地址。
- JMSRedelivered 如果一个客户端收到一个设置了JMSRedelivered 属性的消息,则表示可能该客户端曾经在早些时候收到过该消息,但并没有签收(acknowledged)。
- JMSType 消息类型的识别符。
- JMSExpiration 消息过期时间,等于QueueSender 的send 方法中的timeToLive 值或TopicPublisher 的publish 方法中的timeToLive 值加上发送时刻的GMT 时间值。如果timeToLive值等于零,则JMSExpiration 被设为零,表示该消息永不过期。如果发送后,在消息过期时间之后消息还没有被发送到目的地,则该消息被清除。
- JMSPriority 消息优先级,从0-9 十个级别,0-4 是普通消息,5-9 是加急消息。JMS 不要求JMS Provider 严格按照这十个优先级发送消息,但必须保证加急消息要先于普通消息到达。
3)消息体(Body)
JMS API 定义了5种消息体格式,也叫消息类型,你可以使用不同形式发送接收数据并可以兼容现有的消息格式,下面描述这5种类型:
消息类型 |
消息体 |
TextMessage |
java.lang.String对象,如xml文件内容 |
MapMessage |
名/值对的集合,名是String对象,值类型可以是Java任何基本类型 |
BytesMessage |
字节流 |
StreamMessage |
Java中的输入输出流 |
ObjectMessage |
Java中的可序列化对象 |
Message |
没有消息体,只有消息头和属性。 |
相关推荐
jms学习笔记jms学习笔记jms学习笔记
老师共享给我们的学习资料,分享出来,希望给大家能有所帮助!
JMS学习笔记,详解,实例,安装软件精心总结
NULL 博文链接:https://yuxisanren.iteye.com/blog/1912587
NULL 博文链接:https://elim.iteye.com/blog/1900937
JMS消息模型…………………………………………………………………………………..7 JMS消息工具…………………………………………………………………………………..10 JMS Point-To-Point模式…………………………...
自己辛苦整理的网上的JBoss ESB学习笔记 ,非常详细,代码操作都有截图; 希望大家多支持! 学习笔记PDF的目录如下: 1——搭建ESB开发环境 2 2——第一个ESB代码Hello World 12 3——第二个ESB代码Hello World ...
NULL 博文链接:https://elim.iteye.com/blog/1983532
Spring整合JMS,基于ActiveMQ实现收发消息
JavaEE5学习笔记03-JMS介绍与使用..
JMS规范并不要求供应商同时支持这两种消息模型,但开发者应该熟悉这两种消息模型的优势与缺点。 企业消息产品(或者有时称为面向消息的中间件产品)正逐渐成为公司内操作集成的关 键组件。这些产品可以将分离的业务...
JMS教程,学习笔记,基于XML和JMS的异构数据交换集成
weblogic中使用JMS发送和接受消息(Queue and TOPIC)
JMS规范并不要求供应商同时支持这两种消息模型,但开发者应该熟悉这两种消息模型的优势与缺点。 Java 语言的客户端和 Java 语言的中间层服务必须能够使用这些消息系统。JMS 为 Java 语言程序提供了一个通用的方式来...
深入掌握JMS——ActiveMQ 十一章pdf,收集整理
JMS 支持两种消息传递模型: 点对点(point-to-point,简称 PTP) 发布/订阅(publish/subscribe,简称 pub/sub)。 这两种消息传递模型非常相似,但有以下区别: PTP 消息传递模型规定了一条消息只能传递给一个接收...
JMS的中文教程(Java的消息驱动)很好的一本书,我的珍藏~
NULL 博文链接:https://kingwolf543.iteye.com/blog/965679
JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS(JMS