没有合适的资源?快使用搜索试试~ 我知道了~
首页JMS入门到精通:详细教程与关键概念
JMS入门到精通:详细教程与关键概念
需积分: 50 7 下载量 45 浏览量
更新于2024-07-27
收藏 763KB PDF 举报
"JMS教程文档深入介绍了Java消息服务(JMS)的基础概念和技术细节,由兰天陕西新东方信息自动化有限责任公司于2007年7月发布。该文档首先定义了JMS的基本概念,包括JMS的含义、消息通信在JMS中的角色以及如何实现客户端程序的跨平台兼容性。它探讨了两种主要的消息传递模式,并指导读者如何按照编程步骤开发基于JMS的消息客户端应用,同时强调了多线程在JMS中的处理策略。 第二章详细剖析了JMS的消息模型,涵盖了消息头字段如JMSDestination(目的地)、JMSDeliveryMode(持久化模式)、JMSMessageID(消息标识符)等,以及它们的作用和设置方式。这部分还讨论了消息属性,包括属性名、值、转换和迭代,以及如何进行消息确认和选择。此外,用户可以学习如何访问发送和接收的消息,以及如何修改已经接收到的消息内容。 第三章进一步探讨了JMS的通用设施,包括管理对象如Destination(目的地)和ConnectionFactory(连接工厂),以及它们在消息传递过程中的关键作用。ADMINISTEREDOBJECTS的概念被详细解释,帮助开发者理解如何创建和管理这些核心组件,以构建可靠和灵活的消息架构。 这份JMS教程文档提供了全面且实用的指南,对于希望理解和掌握Java消息服务的开发人员来说,无论是初学者还是进阶者,都是一个宝贵的资源。通过阅读和实践文档中的内容,读者将能够熟练运用JMS进行分布式应用程序间的通信,提高系统的异步处理能力和可扩展性。"
资源详情
资源推荐
JMS 规范教程
第2章JMS 消息模型
2.1 背景:
企业级的消息产品将消息看做包括一个“头”(header)和一个“体”(body)的“轻量级”
条目。“消息头”包含一些用于消息路由和消息识别的字段。“消息体”中包含了被发送的
应用数据。在这种通常的格式下,不同的消息产品对于消息的定义会有很大的不同。这些
不同主要是“消息头”的内容和语义。一些产品使用自我描述的、规范编码的消息数据,
而其他则以完全不透明的方式处理数据。一些产品提供一个库来存储消息的描述,这些描
述用于识别和解释消息的内容,而其他的产品则不会。这就使得 JMS 把握这些消息模型的
常见冲突的尺度变得非常困难。
2.2 目标:
JMS消息模型目标如下:
9 提供一个单独,统一的消息API。
9 提供一个API用于创建消息能够匹配已有的,非JMS应用所使用的格式。
9 支持跨操作系统、机器结构以及计算机语言的异构应用的开发。
9 支持包含Java对象的消息。
9 支持包含可扩展标记语言(XML)页面的消息。
2.3 JMS 消息
JMS 消息包含以下组成部分:
¾ 消息头(Header) :所有的消息都支持一套相同的头字段。头字段包含了客户端和提
供者(provider)用来路由和识别消息的数据。
¾ 消息属性(Properties ):在标准头字段之外提供一种内建的设施用于给消息添加可
选的头字段
应用指定的属性:提供一种给消息添加应用指定的头字段的机制。
标准属性 :JMS定义的一些标准属性,即一些有效的、可选的头字段。
Provider指定的属性:在集成JMS客户端和provider 内在客户端时可能需要使用
Provider指定的属性,JMS 为这些定义了命名约定。
6
JMS 规范教程
¾ 消息体(Body):JMS定义了几种类型的消息体,这些消息体覆盖目前常用的几种消
息样式。
2.4 消息头字段
下面的各节描述了每个 JMS“消息头”,消息头的完整信息将被传递给所有接收到消息
的 JMS 客户端。JMS 没有定义传递给非 JMS 客户端的消息头字段。
2.4.1 JMSDestination
JMSDestination 消息头字段包含了消息被发送到的目的地。当消息被发出的时候,这个字
段被忽略。在消息发送结束后,消息持有了由发送方法指定的目的地对象。当一个消息被
接收的时候,它目的地对象的值必须与它发出时候赋予的值相等。
2.4.2 JMSDeliveryMode
JMSDeliveryMode头字段包含了消息发送时指定的传送模式信息。在消息被发送的时候,
这个字段被忽略,当消息发送完成后,它持有了由发送方法所指定的传送模式。
2.4.3 JMSMessageID
The JMSMessageID 头字段包含了一个唯一的标识每一条由提供者发出消息的值 。
在消息被发送的时候,JMSMessageID被忽略,当send方法返回时,这个字段就包含了一个
由提供者赋予的值。JMSMessageID 是一个 String 值,这个值用做消息在历史库中唯一键
值。唯一性的确切范围由提供者定义,但它至少应当覆盖提供者的一个特定安装点上的所
有消息。安装点就是被一系列消息路由器连接的地方。
所有的JMSMessageID值必须以前缀‘ID:’开头。不必保证消息ID值在跨越不同的提供者时
也保持唯一。因为消息ID会增加消息的大小,所以如果JMS提供者被提示不在应用中使用
消息ID时,可能会优化消息的开销。JMS产生者提出一个禁止消息ID的提示。当一个客户
端设置消息产生者禁止消息ID,这就是说,它不依赖于它所产生消息的ID值。如果JMS提
供者接受了这个提示,消息必须设置消息ID为null 。如果消息提供者忽略了这个提示,那
么消息ID必须被设置为正常的唯一值。
2.4.4 JMSTimestamp
JMSTimestamp 头字段含有消息被交给提供者去发送的时间。这个时间不是消息实际
7
JMS 规范教程
被传送的时间。因为事务或其他客户端对消息的排队导致实际传送消息可能会延迟。
在消息被发出的时候 ,JMSTimestamp 被忽略。当发送方法返回的时候,这个字段包
含了在发送方法被调用和返回时间段之中的一个时间值。这是一个正规Java毫秒时间格式
的时间值。由于timestamps对创建消息和消息的大小会产生影响,如果应用给消息提供者
一个不使用timestamps的一个提示,那么消息提供者可以优化消息的开销。JMS提供者应提
供禁止timestamps的功能。当客户端设置提供者禁止timestamps时,它所产生的消息不依赖
于timestamp。如果JMS提供者接受了这个提示,消息中的timestamp值被设置为0。如果消
息提供者忽略了这个提示,那么timestamp必须设置为正规的值。
2.4.5 JMSCorrelationID
客户端能用JMSCorrelationID 头字段将一个消息同另一个消息相联接。一个典型的用法就
是将一个响应消息同它的请求消息相连接。JMSCorrelationID 能够持有以下中的一种:
z 提供者指定的消息ID.
z 应用指定的字符串。
z 提供者本地的字节值。
因为每个由JMS提供者发出的消息都被赋予一个消息ID值,这非常便于通过消息ID进
行消息之间的连接。所有的消息ID值必须以’ID:’作为前缀。
在某些情况下,应用(由几个客户端组成)需要使用应用指定的值连接消息。例如:
一个应用可以使用JMSCorrelationID去持有对一些外部信息的引用。应用指定的值不必
以’ID:’作为前缀。以“ID:”作为前缀被保留给JMS提供者产生的消息ID 。
如果提供者支持本地概念上的correlation ID(相关联ID),JMS客户端可能需要赋予
JMSCorrelationID一个能够匹配非JMS客户端要求的值。byte[] 值就是用于这个目的。没有
本地correlation ID 值的JMS提供者不需要支持byte[] 值*。使用byte[] 导致应用不具备可移
植性。
* 它们的setJMSCorrelationIDAsBytes() 和 getJMSCorrelationIDAsBytes()
方法将抛出异常
lang.UnsupportedOperationException.
2.4.6 JMSReplyTo
JMSReplyTo头字段包含一个由客户端在发送消息的时候提供的目的地信息 。这个目
的地就是回复这个消息的目的地。发出的消息带有一个null JMSReplyTo 值可能表示一些事
件或者它们只是一些发送者认为别人会感兴趣的数据。带有JMSReplyTo 值的消息通常期
8
剩余55页未读,继续阅读
chenshichenshi
- 粉丝: 0
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AirKiss技术详解:无线传递信息与智能家居连接
- Hibernate主键生成策略详解
- 操作系统实验:位示图法管理磁盘空闲空间
- JSON详解:数据交换的主流格式
- Win7安装Ubuntu双系统详细指南
- FPGA内部结构与工作原理探索
- 信用评分模型解析:WOE、IV与ROC
- 使用LVS+Keepalived构建高可用负载均衡集群
- 微信小程序驱动餐饮与服装业创新转型:便捷管理与低成本优势
- 机器学习入门指南:从基础到进阶
- 解决Win7 IIS配置错误500.22与0x80070032
- SQL-DFS:优化HDFS小文件存储的解决方案
- Hadoop、Hbase、Spark环境部署与主机配置详解
- Kisso:加密会话Cookie实现的单点登录SSO
- OpenCV读取与拼接多幅图像教程
- QT实战:轻松生成与解析JSON数据
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功