JMS1.1 规范
中文版
卫建军
2007‐11‐22
2/66
译者序
Java 是当前 IT 领域中比较流行的技术之一。J2EE 是当前比较流行的企业级应用架构。
本人一直致力于 J2EE 架构的学习和研究,但是总是对英文文档有不可言语的恐惧。我想很
多 J2EE 爱好者和我有同样的感觉。这样就影响了我们深入学习 J2EE 原始规范的兴趣。但是
J2EE 原始的规范文档对我们深入理解 J2EE 有很大的帮助,因为它阐述了规范的来龙去脉,
以及违反了规范会造成什么样的影响。了解了这些缘由和影响,会使我们对 J2EE 架构有更
深层次的理解。这也是我翻译该规范的动力所在。
由于本人的英语水平有限,翻译中难免会出现错误和拗口之处,请大家多多指教。
这次主要翻译的规范有《EJB3 规范简化版》、《J2EE5.0 规范》、《EJB 核心规范》、《EJB3
持久化规范》和《JMS1.1 规范》。希望对大家有所帮助。
卫建军
2008‐1‐5 于北京
3/66
目录
目录..................................................................................................................................................3
1 引言...........................................................................................................................................8
1.1 摘要...............................................................................................................................8
1.2 概述...............................................................................................................................8
1.2.1 是 MailAPI 吗?...............................................................................................8
1.2.2 现存的消息系统...............................................................................................8
1.2.3 JMS 目标...........................................................................................................9
1.2.4 JMS 不包含什么.............................................................................................10
1.3 JMS 的要求是什么.....................................................................................................10
1.4 与其他 JavaAPI 的关系..............................................................................................10
1.4.1 JDBC 软件........................................................................................................10
1.4.2
JavaBean 组件.................................................................................................10
1.4.3 EJB 组件模型..................................................................................................11
1.4.4 Java 事务 API(JTA).....................................................................................11
1.4.5 Java 事务服务(JTS)....................................................................................11
1.4.6 Java 命名和目录接口 API(JNDI)...............................................................11
1.4.7 J2EE 平台........................................................................................................11
1.4.8 JMS 和 EJB 组件的集成..................................................................................12
1.5 JMS1.1 的新特性是什么?........................................................................................12
2 架构.........................................................................................................................................12
2.1 概述.............................................................................................................................12
2.2 什么是
JMS 应用........................................................................................................12
2.3 管理.............................................................................................................................13
2.4 两种消息风格.............................................................................................................13
2.5 JMS 接口.....................................................................................................................14
2.6 开发一个 JMS 应用....................................................................................................15
2.6.1 开发一个 JMS 客户端....................................................................................15
2.7 安全.............................................................................................................................15
2.8 多线程.........................................................................................................................15
2.9 触发式客户端.............................................................................................................16
2.10 请求/回复...............................................................................................................16
3 JMS 消息模型.........................................................................................................................16
3.1 背景.............................................................................................................................
16
3.2 目标.............................................................................................................................17
3.3 JMS 消息.....................................................................................................................17
3.4 消息头字段.................................................................................................................17
3.4.1 JMSDestination................................................................................................17
3.4.2 JMSDeliveryMode...........................................................................................17
3.4.3 JMSMessageID................................................................................................18
3.4.4 JMSTimestamp................................................................................................18
3.4.5 JMSCorrelationID.............................................................................................18
3.4.6 JMSReplyTo......................................................................................................19
4/66
3.4.7 JMSRedelivered...............................................................................................19
3.4.8 JMSType...........................................................................................................19
3.4.9 JMSExpiration..................................................................................................19
3.4.10 JMSPriority......................................................................................................20
3.4.11 如何设置消息头的值.....................................................................................20
3.4.12 重载消息头字段.............................................................................................20
3.5 消息属性.....................................................................................................................20
3.5.1 属性名.............................................................................................................21
3.5.2 属性值.............................................................................................................21
3.5.3 属性的使用.....................................................................................................21
3.5.4 属性值转换.....................................................................................................21
3.5.5 属性值作为对象.............................................................................................22
3.5.6 属性迭代.........................................................................................................22
3.5.7 清除消息属性的值.........................................................................................22
3.5.8 不存在的属性.................................................................................................22
3.5.9 JMS 定义的属性.............................................................................................22
3.5.10 提供商专有的属性.........................................................................................23
3.6 消息确认.....................................................................................................................24
3.7 Message 接口.............................................................................................................24
3.8 消息选择.....................................................................................................................24
3.8.1 消息选择器.....................................................................................................24
3.9 访问已发送的消息.....................................................................................................27
3.10 改变收到的消息的值.............................................................................................28
3.11 JMS 消息体.................................................................................................................28
3.11.1 清除消息体.....................................................................................................28
3.11.2
只读消息体.....................................................................................................28
3.11.3 由 StreamMessage 和 MapMessage 提供的转换.........................................29
3.11.4 用于非 JMS 客户端的消息............................................................................29
3.12 JMSMessage 接口的提供商实现..............................................................................30
4 JMS 公共工具.........................................................................................................................30
4.1 概述.............................................................................................................................30
4.2 受管理的对象.............................................................................................................30
4.2.1 Destination......................................................................................................31
4.2.2 ConnectionFactory..........................................................................................31
4.3 Connection..................................................................................................................31
4.3.1 授权.................................................................................................................32
4.3.2 客户端标识
.....................................................................................................32
4.3.3 Connection 设置.............................................................................................32
4.3.4 中止消息的转发.............................................................................................33
4.3.5 关闭 Connection.............................................................................................33
4.3.6 会话(Session)..................................................................................................34
4.3.7 ConnectionMetaData......................................................................................34
4.3.8 ExceptionListener............................................................................................34
4.4 Session.........................................................................................................................34
5/66
4.4.1 关闭会话.........................................................................................................35
4.4.2 创建 MessageProducer 和 MessageConsumer..............................................35
4.4.3 创建临时目的地.............................................................................................35
4.4.4 创建目的地对象.............................................................................................35
4.4.5 优化消息实现.................................................................................................36
4.4.6 使用会话的约定.............................................................................................36
4.4.7 事务.................................................................................................................37
4.4.8 分布式事务.....................................................................................................37
4.4.9 多会话.............................................................................................................37
4.4.10 消息排序.........................................................................................................37
4.4.11 消息确认.........................................................................................................38
4.4.12 消息的重复转发.............................................................................................39
4.4.13
消息的重复产生.............................................................................................39
4.4.14 客户端代码的有序执行.................................................................................39
4.4.15 并行消息转发.................................................................................................39
4.5 MessageConsumer......................................................................................................39
4.5.1 同步转发.........................................................................................................40
4.5.2 异步转发.........................................................................................................40
4.6 MessageProducer........................................................................................................40
4.7 消息转发模式.............................................................................................................41
4.8 消息的生存时间.........................................................................................................41
4.9 异常.............................................................................................................................41
4.10 可靠性.....................................................................................................................41
4.11 方法跨消息域继承.................................................................................................42
5 JMS 点对点模型.....................................................................................................................
42
5.1 概述.............................................................................................................................42
5.2 队列管理.....................................................................................................................43
5.3 Queue..........................................................................................................................43
5.4 TemporaryQueue........................................................................................................43
5.5 QueueConnectionFactory...........................................................................................43
5.6 QueueConnection.......................................................................................................44
5.7 QueueSession..............................................................................................................44
5.8 QueueReceiver............................................................................................................44
5.9 QueueBrowser............................................................................................................44
5.10 QueueRequestor.........................................................................................................44
5.11 可靠性.....................................................................................................................45
6 JMS 发布/订阅模型...............................................................................................................45
6.1 概述.............................................................................................................................45
6.2 Pub/Sub 延时..............................................................................................................45
6.3 永久订阅.....................................................................................................................46
6.4 主题(Top i c )管理....................................................................................................46
6.5 Top i c ............................................................................................................................46
6.6 TemporaryTopic...........................................................................................................46
6.7 TopicConnectionFactory..............................................................................................47