HornetQ 2.1用户手册

Putting the buzz in messaging


Table of Contents

1. 法律声明
2. 前言
3. 项目信息
3.1. 软件下载
3.2. 其它相关信息
4. 消息的相关概念
4.1. 消息相关的概念
4.2. 消息的种类
4.2.1. 消息队列模式
4.2.2. 消息的广播/订阅模式
4.3. 传送的可靠性
4.4. 交易(Transactions)
4.5. 持久性(Durability)
4.6. 消息API和协议
4.6.1. Java消息服务(JMS)
4.6.2. 专有的API
4.6.3. RESTful API
4.6.4. STOMP
4.6.5. AMQP
4.7. 高可获得性(Availability)
4.8. 集群
4.9. 桥接(Bridge)和路由(Routing)
5. 总体架构
5.1. 核心架构
5.2. 将HornetQ嵌入到你的应用程序中
5.3. 将HornetQ与JEE应用服务器集成
5.4. HornetQ作为独立的服务(standalone)
6. 使用HornetQ服务
6.1. 服务的启动和停止
6.2. 服务器端JVM参数的设置
6.3. 服务器端的classpath
6.4. Library Path
6.5. 系统变量
6.6. 配置文件
6.7. JBoss Microcontainer Beans 文件
6.8. JBoss AS4 MBean 服务
6.9. 主配置文件
7. 使用JMS
7.1. 一个简单的订购系统
7.2. JMS服务的配置
7.3. JNDI的配置
7.4. 程序代码
7.5. 不使用JNDI而直接创建JMS的对象
7.6. Client ID的设置
7.7. 设置DUPS_OK的Batch Size
7.8. 设置事务(Transaction)的Batch Size
8. 使用HornetQ内核
8.1. 内核消息系统的相关概念
8.1.1. 消息
8.1.2. 地址(Address)
8.1.3. Queue
8.1.4. ClientSessionFactory
8.1.5. ClientSession
8.1.6. ClientConsumer
8.1.7. ClientProducer
8.2. 一个内核的应用实例
9. JMS与内核API之间的映射关系
10. 客户端的Classpath
10.1. 使用HornetQ内核的客户端
10.2. JMS客户端
10.3. 需要JNDI的JMS客户端
11. 例子
11.1. JMS 例子
11.1.1. 应用层的失效备援(Failover)
11.1.2. 内核桥(Bridge)例子
11.1.3. 浏览器(Browser)
11.1.4. Client Kickoff
11.1.5. 客户端的负载均衡
11.1.6. 集群分组
11.1.7. 集群队列
11.1.8. 单机集群
11.1.9. 集群的Topic
11.1.10. 限制接收速率
11.1.11. 死消息(Dead Letter)
11.1.12. 延迟再发送
11.1.13. 转移(Divert)
11.1.14. 持久订阅(Durable Subscription)
11.1.15. 嵌入方式(Embedded)
11.1.16. HTTP 传输协议的支持
11.1.17. 直接实例化JMS对象
11.1.18. 拦截器(Interceptor)
11.1.19. JAAS
11.1.20. JMS桥(Bridge)
11.1.21. JMX管理
11.1.22. 大消息
11.1.23. 最新值队列
11.1.24. 分布式队列的负载均衡
11.1.25. 管理
11.1.26. 管理通知
11.1.27. 消息计数器
11.1.28. 消息失效
11.1.29. 消息组
11.1.30. 消息组(例2)
11.1.31. 消息优先级
11.1.32. 零接收缓冲
11.1.33. 带有服务器数据复制的非事务失效备援
11.1.34. 分页(paging)
11.1.35. 预先通知
11.1.36. 消息发送速度限制
11.1.37. 队列
11.1.38. Message再分配
11.1.39. 队列请求
11.1.40. 带消息选择器(selector)的队列
11.1.41. 节点连接重试
11.1.42. 请求/应答
11.1.43. 定时消息
11.1.44. 安全
11.1.45. 发送通知
11.1.46. SSL传输支持
11.1.47. 静态消息选择器
11.1.48. 使用JMS方法来配置静态消息选择器
11.1.49. Stomp
11.1.50. Stomp与Web Sockets
11.1.51. 对称型集群
11.1.52. 临时队列
11.1.53. 话题(Topic)
11.1.54. 话题体系(Topic Hierarchy)
11.1.55. 话题选择器例1
11.1.56. 话题选择器例2
11.1.57. 带有数据复制的事务性失效备援
11.1.58. 事务性会话
11.1.59. XA Heuristic
11.1.60. XA 接收
11.1.61. XA 发送
11.1.62. XA与事务管理器(transaction manager)
11.2. 核心API的例子
11.2.1. 嵌入式
11.3. Java EE 例子
11.3.1. EJB/JMS 事务
11.3.2. HAJNDI (High Availability)
11.3.3. 资源适配器的配置(JCA)
11.3.4. 资源适配器运程服务器的配置
11.3.5. JMS 桥(Bridge)
11.3.6. MDB (消息驱动Bean)
11.3.7. Servlet传输
11.3.8. Servlet SSL 传输
11.3.9. XA 恢复(recovery)
12. 使用通配符实现消息路由
13. 了解 HornetQ 通配符的语法
14. 过滤器表达式
15. 持久化
15.1. 配置绑定日志
15.2. 配置JMS日志
15.3. 配置消息日志
15.4. 关于关闭磁盘写缓冲的重要说明
15.5. 安装AIO
15.6. 配置HornetQ不使用持久化
16. 传输层的配置
16.1. 接收器(Acceptor)
16.2. 连接器(Connectors)
16.3. 在客户端直接配置传输层
16.4. 配置 Netty 传输层
16.4.1. 配置 Netty TCP
16.4.2. 配置Netty SSL
16.4.3. 配置Netty HTTP
16.4.4. 配置Netty Servlet
17. 失效连接的检测
17.1. 服务器端对失效连接的清除
17.1.1. 关闭没有被成功关闭的核心会话或JMS连接
17.2. 客户端的故障检测
17.3. 配置异步连接任务执行
18. 配置资源管理器(Resource Manager)
19. 流控制
19.1. 接收者(consumer)流控制
19.1.1. 基于窗口的流控制
19.1.1.1. 使用核心接口(Core API)进行流控制
19.1.1.2. 使用JMS的流控制
19.1.2. 速率流控制
19.1.2.1. 使用核心接口(Core API)
19.1.2.2. 使用JMS
19.2. 发送者(producer)的流控制
19.2.1. 基于窗口的流控制
19.2.1.1. 使用核心接口(Core API)
19.2.1.2. 使用JMS
19.2.1.3. 限定发送者窗口流控制
19.2.2. 速率流控制
19.2.2.1. 使用核心接口(Core API)
19.2.2.2. 使用 JMS
20. 发送与提交的保证
20.1. 事务保证
20.2. 非事务性消息发送的保证
20.3. 非事务性通知的保证
20.4. 异步发送通知
20.4.1. 异步发送通知
21. 消息再传递及未传递的消息
21.1. 延迟再传递
21.1.1. 延迟再传递的配置
21.1.2. 例子
21.2. 死信地址
21.2.1. 配置死信地址
21.2.2. 死信的属性
21.2.3. 例子
21.3. 传递计数的持久化
22. 过期的消息
22.1. 过期消息的配置
22.2. 配置过期地址
22.3. 配置过期回收线程
22.4. 例子
23. 大消息
23.1. 服务器端的配置
23.2. 设定限制
23.2.1. 使用核心的API
23.2.2. 使用JMS
23.3. 大消息与流(stream)
23.3.1. 核心API中流的使用
23.3.2. 在JMS中使用流
23.4. 不使用流的方式
23.5. 在客户端缓存大消息
23.6. 大消息例子
24. 分页转存
24.1. 分页文件
24.2. 配置
24.3. 分页转存模式
24.3.1. 配置
24.4. 丢弃消息
24.5. 阻塞发送者(producer)
24.6. 对于有多个队列绑定的地址的配置注意事项
24.7. 分页转存与消息的选择器(selector)
24.8. 分页转存与浏览器
24.9. 分页转存与未通知的消息
24.10. 例子
25. 队列属性
25.1. 预定义的队列
25.2. 使用接口(API)创建队列
25.3. 通过地址设置来配置队列属性
26. 定期消息
26.1. 定期传递参数
26.2. 例子
27. 最新值队列(Last-Value Queues)
27.1. 最新值队列的配置
27.2. 使用Last-Value参数
27.3. 例子
28. 消息分组
28.1. 使用核心接口
28.2. 使用JMS
28.3. 例子
28.4. 例子
28.5. 集群中的消息组
28.5.1. 集群消息组的最佳使用惯例
28.5.2. 集群消息组例子
29. 预先通知模式(pre-acknowledge)
29.1. 使用PRE_ACKNOWLEDGE
29.2. 例子
30. 管理
30.1. 管理接口API
30.1.1. 核心管理接口
30.1.1.1. 核心服务器管理
30.1.1.2. 核心地址的管理
30.1.1.3. 核心队列的管理
30.1.1.4. 其它核心资源的管理
30.1.2. JMS管理接口
30.1.2.1. JMS服务器管理
30.1.2.2. JMS连接工厂的管理
30.1.2.3. JMS队列管理
30.1.2.4. JMS话题(Topic)的管理
30.2. 使用JMX
30.2.1. 配置JMX
30.2.1.1. MBeanServer的配置
30.2.2. 例子
30.3. 使用核心接口
30.3.1. 配置核心管理
30.4. 使用JMS进行管理
30.4.1. 配置JMS管理
30.4.2. 例子
30.5. 管理通知
30.5.1. JMX通知
30.5.2. 核心消息通知
30.5.2.1. 配置核心管理通知地址
30.5.3. JMS消息通知
30.5.4. 例子
30.6. 消息计数器
30.6.1. 配置消息计数器
30.6.2. 例子
30.7. 通过JBoss应用服务器的Admin Console来管理HornetQ的资源
30.7.1. JMS队列
30.7.2. JMS话题
30.7.3. JMS连接工厂
31. 安全
31.1. 基于角色的地址安全
31.2. 安全套接字层(SSL)传输
31.3. 基本用户身份信息(Credentials)
31.4. 更换安全管理器
31.5. JAAS安全管理器
31.5.1. 例子
31.6. JBoss 应用服务器安全管理器
31.6.1. 配置客户端登录
31.7. 集群用户名/密码的配置
32. Java EE和应用服务器的集成
32.1. 配置消息Bean
32.1.1. 使用容器管理事务(CMT)
32.1.2. 使用Bean管理事务(BMT)
32.1.3. 在MDB中使用选择器
32.2. 在JEE模块内发送消息
32.3. MDB与接收池的大小
32.4. 配置JCA适配器
32.4.1. 适配器的全局参数
32.4.2. 适配器外部(outbound)配置
32.4.3. 适配器内部(inbound)配置
32.4.4. 配置适配器访问单独的HornetQ服务器
32.4.4.1.
32.4.4.1.1. 配置内部适配器
32.4.4.1.2. 配置外部适配器
32.4.5. 高可获得性JNDI (HA-JNDI)
32.4.6. XA恢复
32.4.6.1. XA恢复的配置
32.4.6.1.1. 配置参数
32.4.6.2. 例子
33. JMS桥(Bridge)
33.1. JMS桥的配置参数
33.2. 源和目的的连接工厂
33.3. 源和目的的目标工厂
33.4. 服务质量
33.4.1. AT_MOST_ONCE
33.4.2. DUPLICATES_OK
33.4.3. ONCE_AND_ONLY_ONCE
33.4.4. JMS bridge中的超时问题
33.4.5. 例子
34. 客户端重新连接与会话恢复
34.1. 100%透明的会话恢复(re-attachment)
34.2. 会话重新连接
34.3. 重新连接/会话恢复的配置参数
34.4. ExceptionListeners and SessionFailureListeners
35. 消息的转发(divert)与分流
35.1. 唯一式转发器
35.2. 不唯一转发器
36. 核心桥
36.1. 桥的配置
37. 重复消息检测
37.1. 在消息发送中应用重复检测
37.2. 配置重复ID缓存
37.3. 桥与重复检测
37.4. 重复检测与集群连接
37.5. 分页转存与重复检测
38. 集群
38.1. 集群概述
38.2. 服务器发现
38.2.1. 广播组
38.2.2. 发现组
38.2.3. 在服务器端定义发现组。
38.2.4. 客户端的发现组
38.2.4.1. 使用JMS时客户端发现的配置方法
38.2.4.2. 使用核心API的客户端的配置
38.3. 服务器端消息的负载均衡
38.3.1. 配置集群连接
38.3.2. 集群用户的安全信息
38.4. 客户端负载均衡
38.5. 显式指定集群服务器
38.5.1. 在客户端指定服务器列表
38.5.1.1. 使用JMS时指定服务器列表
38.5.1.2. 使用核心接口指定服务器列表
38.5.2. 指定服务器列表以组成集群
38.6. 消息再分配
38.7. 集群拓扑结构
38.7.1. 对称式集群
38.7.2. 链式集群
39. 高可获得性(High Availability)和失效备援(Failover)
39.1. 主要-备份对
39.1.1. 高可获得性(HA)的模式
39.1.1.1. 数据复制
39.1.1.1.1. 配置
39.1.1.1.2. 备份服务器与主服务器间的同步
39.1.1.2. 存贮共享
39.1.1.2.1. 配置
39.1.1.2.2. 备份服务器与主服务器间的同步。
39.2. 失效备援的模式
39.2.1. 自动客户端失效备援
39.2.1.1. 关于服务器的复制
39.2.1.2. 失效备援时阻塞调用的处理
39.2.1.3. 事务的失效备援处理
39.2.1.4. 非事务会话的失效备援处理
39.2.2. 连接故障的通知
39.2.3. 应用层的失效备援
40. Libaio平台专有库
40.1. 库文件的编译
40.1.1. 安装要求
40.1.2. 开始编译
41. 线程管理
41.1. 服务器端线程的管理
41.1.1. 服务器端可计划线程池
41.1.2. 服务器通用线程池
41.1.3. 过期回收线程
41.1.4. 异步IO
41.2. 客户端线程管理
42. 日志(Logging)
42.1. 与JBoss应用服务器日志的关系
43. 嵌入式HornetQ
43.1. POJO的初始化
43.2. 使用依赖注入框架
43.3. 连接嵌入式HornetQ
43.3.1. 核心接口
43.3.2. JMS接口
43.4. JMS嵌入式HornetQ的例子
44. 拦截操作
44.1. 实现拦截器
44.2. 配置拦截器
44.3. 客户端拦截器
44.4. 例子
45. 互操作性
45.1. Stomp
45.1.1. 内建Stomp支持
45.1.1.1. 限制
45.1.2. Stomp目标与HornetQ的地址和队列的映射
45.1.3. Stomp与JMS的互操作性
45.1.3.1. 使用JMS目标
45.1.3.2. 使用JMS或核心接口发送和接收Stomp消息
45.1.4. 通过Web Sockets使用Stomp
45.1.5. StompConnect
45.2. REST
45.3. AMQP
46. 性能调优
46.1. 持久层的优化
46.2. 优化JMS
46.3. 其它优化
46.4. 传输层的优化
46.5. 优化虚拟机
46.6. 避免违背设计模式
47. 配置参数索引
47.1. 服务器配置
47.1.1. hornetq-configuration.xml
47.1.2. hornetq-jms.xml