activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jbert...@apache.org
Subject [23/51] [partial] activemq-6 git commit: ACTIVEMQ6-1 - Initial HornetQ Donation Commit
Date Mon, 10 Nov 2014 16:32:34 GMT
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/messaging-concepts.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/messaging-concepts.xml b/docs/user-manual/zh/messaging-concepts.xml
new file mode 100644
index 0000000..eef961c
--- /dev/null
+++ b/docs/user-manual/zh/messaging-concepts.xml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="messaging-concepts">
+    <title>消息的相关概念</title>
+    <para>HornetQ是一个异步的 <ulink
+            url="http://en.wikipedia.org/wiki/Message_oriented_middleware">
+            面向消息的中间件</ulink>。在本文档中我们简称为消息系统。</para>
+    <para>首先我们简要介绍消息系统是做什么的,在哪些领域得到应用,以及与消息相关的一些概念。</para>
+    <para>如果你已经对消息系统的这些方面的知识很熟悉,可以跳过本章内容。</para>
+    <section>
+        <title>消息相关的概念</title>
+        <para>消息系统可以将不同异种的系统松散地耦合在一起,提供基本的可靠性,事务及其它功能的支持。</para>
+        <para>与基于<ulink
+                url="http://en.wikipedia.org/wiki/Remote_procedure_call">远程过程调用
+                </ulink> (RPC) 的系统不同,消息系统主要采用异步传送的方式,请求与响应之间的耦合很松。
+                大多数的消息系统也支持请求-响应的方式,但这不是消息的主要功能。</para>
+        <para>端与端之间采用异步通信的好处是可以充分利用硬件资源,最大程度减少IO操作引起的线程阻塞,并充分利用网络带宽。
+              而采用RPC方式,每一个请求必须要等待响应返回才能继续,因而要依赖你的网络的速度
+             (<emphasis role="italic">latency</emphasis>)。异步系统则能将消息以管道的方式传送,
+              它只受<emphasis role="italic">带宽</emphasis>的限制,并不因网络速度而降低效率。利用异步的方式往往可以创建更高效率的应用。</para>
+        <para>消息系统将消息的发送方与接收方分开,使消息的发送所接收完全独立于对方,有利于创建灵活的、松耦的系统。</para>
+        <para>大型的企业应用通常采用消息系统来实现一种消息总线,并基于这个总线将企业的各种不同结构的系统松散地连在一起工作。
+              消息总线也常常是<ulink url="http://en.wikipedia.org/wiki/Enterprise_service_bus">企业服务总线</ulink>(ESB)的核心。 
+              采用这种方式搭建的松耦合系统可以非常容易地扩展和修改。由于系统各模块之间的信赖关系很弱,所以在需要时可以对系统灵活地添加和减少模块。</para>
+    </section>
+    <section>
+        <title>消息的种类</title>
+        <para>消息系统通常支持两种异步的传送模式:<ulink url="http://en.wikipedia.org/wiki/Message_queue">消息队列</ulink>
+             (又称为点对点消息传送)模式和<ulink url="http://en.wikipedia.org/wiki/Publish_subscribe">广播/订阅模式</ulink>。</para>
+        <section>
+            <title>消息队列模式</title>
+            <para>在这种模式中消息被发送到队列中。通常消息会被持久化以保证可靠的传送。消息系统会将队列中的消息传送给接收者
+                 (receiver或consumer)。当接收者处理消息完成后,它会发出完成的通知给消息系统。得到通知的消息就会从队列
+                  中删除,因此该消息不会被再次传送。如果在收到消息前消息服务器发生故障导致系统崩溃,当系统恢复时,
+                  该消息会被再次传送给接收者。</para>
+            <para>这种模式允许一个队列有多个接收者。但是一个消息最多只传送给一个接收者。一个队列的消息发送者(sender或producer)
+                  与接收者是完全独立的。它们不知道彼此的存在。</para>
+            <para>图书订单系统是一个典型的消息队列的用例。每一个订单都被包装为一个消息传送到订单队列中。假定有多个图书订购的终
+                  端向订单队列发关订单消息。当一个消息到达队列时它被持久化以防止系统崩溃时订单的丢失。再假定有多个订单处理中心
+                  分布在不同的机器上接收这个订单队列的消息。消息系统将每一个消息发送给其中一个(并且只发送一个)接收者(即一个订单处理模块)。
+                  这样不同的订单可能会被不同的处理模块处理,但一个订单只会被处理一次。</para>
+            <para>当订单处理模块接收到一个消息,对它进行处理后将订单信息发送给仓库系统并更新订单数据库。处理完成后它会发出通知告诉服务
+                  器可以删除此消息。通常这一系列和处理(接收,发送给仓库系统,更新数据库以及通知)会被作为一个交易来处理以保证它的完整性
+                 (<ulink url="http://en.wikipedia.org/wiki/ACID">ACID</ulink>)。</para>
+        </section>
+        <section>
+            <title>消息的广播/订阅模式</title>
+            <para>这种模式中,多个发送者将消息发送到服务器中一个特定的实体,JMS中通常称为话题(topic)。
+                  一个Topic常常有多个订阅者(subscription,即消息的接收者)。</para>
+            <para>与消息队列的接收者不同,每个订阅者都会收到发送的队列中的每个消息。</para>
+            <para>订阅者可以选择为固定的方式(<emphasis role="italic">durable</emphasis>)。采用这种方式的订阅者,
+                  其消息会保留直到被接收为止。即使是其间服务器发生过故障或重启也不受影响。非固定的订阅者只在其连接期间有效,
+                  一但连接断开其消息将不会保留。</para>
+            <para>电子消息订阅是消息广播模式的一个例子。当新闻被世界各地的编辑編好后,他们将其发关到新闻topic。
+                  同样对这些新闻兴趣的读者会订阅这个topic。消息系统将保证每个订阅者都能够收到每一篇新闻稿。</para>
+        </section>
+    </section>
+    <section>
+        <title>传送的可靠性</title>
+        <para>大多数的消息系统是<emphasis role="italic">可靠的消息传送系统</emphasis>。消息系统可以保证一个消息被传送
+              给一个并且只传送给一个队列的接收者或每个话题的固定的订阅者。一个消息不会被传送两次。即使在系统出现故障时也是如此。
+              这一特性对于很多企业来说是非常重要的。比如你想要保证订单不丢失或被处理两次以上,就可以利用该特性。</para>
+        <para>在某些情况下这种“一次并且只有一次”的传送方式并不是很重要,重复消息和消息的丢失并不影响系统的功能。比如股票价格
+              的更新消息,它并不需要保证每次都能收到,因为前一次更新很快就会被下一次代替。这样的功能消息系统也可以支持。</para>
+    </section>
+    <section>
+        <title>交易(Transactions)</title>
+        <para>消息系统通常支持在一次本地交易中发送并通知多个消息。HornetQ还支持分布式交易。它可以通过Java的XA和JTA接口,
+              将消息的发送与通知做为一个分布式交易的一部分来完成。</para>
+    </section>
+    <section>
+        <title>持久性(Durability)</title>
+        <para>消息可以分为持久消息和非持久消息。持久消息被保存到永久的存储介质中,不受服务器故障与重启的影响。非持久消息在服务
+              器故障与重启时则会丢失。像订单,交易信息属于持久消息,而股票价格更新由于它的即时性则可以做为非持久消息来处理。</para>
+    </section>
+    <section>
+        <title>消息API和协议</title>
+        <para>客户端的应用程序怎样访问消息系统来进行消息的发送与接收呢?</para>
+        <para>一些消息系统提供私有的API,客户端可以通过这些私有的API与相应的消息系统交互,实现消息的收发。</para>
+        <para>除此之外,还存在着一些标准的交互方式可供使用。另外还有一些标准正在不断完善。下面我们就介绍一下这些标准。</para>
+        <para>Let's take a brief look at these:</para>
+        <section>
+            <title>Java消息服务(JMS)</title>
+            <para><ulink url="http://en.wikipedia.org/wiki/Java_Message_Service">JMS</ulink> 属于Sun公司JEE规范的一部分。
+            它定义了一套标准的API支持消息队列和广播-订阅模式。JMS是一套非常精简的通用的标准,它将当时已经存在的消息系统的共同功能包括了进去。
+            </para>
+            <para>JMS是一个广泛使用的API,绝大多数的消息系统都支持它。JMS只有Java的客户端才可以使用。</para>
+            <para>JMS并没有定义传输的格式(wire format)。因此不同的JMS消息服务器的和客户端相互之间通常不能交互,这是因为每个消息系统都自己的传输格式。</para>
+            <para>HornetQ全面支持JMS 1.1 API。</para>
+        </section>
+        <section>
+            <title>专有的API</title>
+            <para>很多系统提供自己的一套API来与其消息系统进行通迅,其优势是它可以允许客户端使用其全部的功能。
+                  像JMS那样的标准API往往不能提供许多消息系统所支持的额外的功能。</para>
+            <para>HornetQ提供了一套自有的核心API,客户端程序可以通过它充分利用HornetQ的强大功能。
+                  这对于一些JMS API满足不了的需求是非常有用的。</para>
+        </section>
+        <section>
+            <title>RESTful API</title>
+            <para>采用<ulink url="http://en.wikipedia.org/wiki/Representational_State_Transfer"
+                    >REST</ulink> REST[http://en.wikipedia.org/wiki/Representational_State_Transfer]方式与消息系统交互越来越被关注。</para>
+            <para>由于云计算技术的API标准目前倾向于采用REST的方式,所以采用REST方式的消息系统很有望成为云计算中消息传送的标准。</para>
+            <para>REST方式中的各种消息资源以URI的方式来定义。用户通过一套很简单的操作与这些资源相交互,如PUT、POST、GET等。HTTP通常用来作为REST方式的通信协议。</para>
+            <para>采用HTTP的好处是它很简单实用,并且internet经过多年的发展已经能很好的支持HTTP协议。</para>
+            <para>HornetQ将会很快地支持REST方式的API。</para>
+        </section>
+        <section>
+            <title>STOMP</title>
+            <para><ulink
+                    url="http://stomp.codehaus.org/"
+                    >Stomp</ulink> 是为消息系统定义的一套简单的文本传输协议。它定义了一种线上传输的格式,
+                     因此采用Stomp编写的客户端可以与所有支持Stomp的消息系统交互。Stomp的客户端可以用多种编程语言来实现。</para>
+            <para>有关在HornetQ中如何使用Stomp的详细内容请参见<xref linkend="stomp"/>。</para>
+        </section>
+        <section>
+            <title>AMQP</title>
+            <para><ulink url="http://en.wikipedia.org/wiki/AMQP">AMQP</ulink> 是一套可支持互操作的消息规范。
+            它定义了自己的传输格式,因些任何AMQP的客户端都可以和支持AMQP的系统进行交互。AMQP的客户端可以用多种编程语言来实现。</para>
+            <para>HornetQ将会很快地支持AMQP。</para>
+        </section>
+    </section>
+    <section>
+        <title>高可获得性(Availability)</title>
+        <para>高可获得性是指在系统中有一个或多个服务器发生故障时仍然能够维持运转的特性。不同的消息系统对高可获得性的支持程度是不同的。</para>
+        <para>HornetQ支持自动失效备援(failover),也就是当主服务器出现故障时,当前的会话会自动连接到备用的服务器上。</para>
+        <para><xref linkend="ha"/>给出了HornetQ的HA特性的详细信息。</para>
+    </section>
+    <section>
+        <title>集群</title>
+        <para>许多消息系统支持由多个消息服务器组成的集群。集群可以使发送和接收的负荷分散到不同的服务器中。
+              通过增加集群服务器,可以有效的增加整个集群处理消息的能力。</para>
+        <para>然而不同的消息系统有着不同的集群架构。有的集群架构十分简单,有的集群中成员间的联系很少。</para>
+        <para>HornetQ提供了非常先进的可配置的集群模型。根据每个节点接收者(consumer)的多少以及是否具有接收状态,消息在集群中可以进行智能化负载均衡。</para>
+        <para>HornetQ还能够在集群中的节点间进行消息的再分发,以避免在某个节点出现消息匮乏(starvation)现象。</para>
+        <para>有关集群的详细内容参见<xref linkend="clusters"/>。</para>
+    </section>
+    <section>
+        <title>桥接(Bridge)和路由(Routing)</title>
+        <para>有些消息系统可以将一些分散在不可靠的网络(如广域网或internet)上孤立的集群或节点桥接在一起。</para>
+        <para>通常一个桥的作用是从一台服务器的队列上接收消息然后将消息再转发到另一台服务器的队列中。桥连接可以解决不可靠网络连接的问题。
+              桥有自动重新连接的功能。一旦网络连接中断,桥可以自动进行重试直到重新连接上为止。</para>
+        <para>HornetQ的桥接功能可以配置过滤表达式,以实现有条件的转发。另外,它还可以实现消息转换的功能(transformation)。</para>
+        <para>HornetQ还允许配置消息在队列之间进行路由。利用它可以完成复杂的路由网络以便在不同队列间进行消息转发与复制,形成一个互连的消息代理(broker)网络。</para>
+        <para>有关的详细内容将在<xref linkend="core-bridges"/>和<xref
+                linkend="diverts"/>给出。</para>
+    </section>
+</chapter>
+

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/notice.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/notice.xml b/docs/user-manual/zh/notice.xml
new file mode 100644
index 0000000..c5afdda
--- /dev/null
+++ b/docs/user-manual/zh/notice.xml
@@ -0,0 +1,27 @@
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+
+<chapter id="notice">
+    <title>法律声明</title>
+        
+        <para>Red Hat, Inc. 以及其他公司2010年版权所有。</para>
+        <para>Red Hat公司依照 CC-BY-SA 3.0 Unported(Creative Commons 
+              Attribution-Share Alike)条款之规定授权用戶是用本手册中的文字和插图。</para>
+        <para>有关 CC-BY-SA 的解释请访问<ulink url="http://creativecommons.org/licenses/by-sa/3.0/">http://creativecommons.org/licenses/by-sa/3.0/</ulink>。根据CC-BY-SA的规定,如果要发布本文档或任何本文档的修改版本,都必须给出原始版本文档的URL。</para>
+        <para>Red Hat 作为本文档的授权方声明在相关法律允许的最大范围内放弃CC-BY-SA第4d节所规定的权利。</para>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/paging.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/paging.xml b/docs/user-manual/zh/paging.xml
new file mode 100644
index 0000000..db3e945
--- /dev/null
+++ b/docs/user-manual/zh/paging.xml
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="paging">
+    <title>分页转存</title>
+    <para>HornetQ可以在有限的内存下支持包含百万消息的超大规模的队列。</para>
+    <para>当有限的内存无法装得下如此多的消息时,HornetQ将它们<emphasis>分页转存</emphasis>到磁盘中,在内存
+        有空闲时再将消息分页装载到内存。通过这样的处理,不需要服务器有很大的内存就可以支持大容量的队列。</para>
+    <para>通过配置可以给一个地址设置一个最大消息值。当这个地址消息数在内存中超过了这个值时,HornetQ开始将多余的消息
+        转存到磁盘中。</para>
+    <para>默认情况下HornetQ不转存任何消息。这一功能必须显式地通过配置来激活。</para>
+    <section>
+        <title>分页文件</title>
+        <para>消息按照所属的地址分别保存在不同的文件中。每一个地址有一个单独的文件夹,每个文件夹内消息被保存在
+            数个文件中(分页文件)。每个文件保存固定数量的消息(由参数<literal>page-size-bytes</literal>
+            设定)。当从分页文件中读取消息时,一个文件的所有消息被读到内存并被路由。当所有消息处理后,该文件就
+            被删除。</para>
+    </section>
+    <section id="paging.main.config">
+        <title>配置</title>
+        <para>你可以配置分页转存文件夹的位置。</para>
+        <para>在主配置文件<literal>hornetq-configuration.xml</literal>)中
+            可以定义全局的分页转发参数。</para>
+        <programlisting>&lt;configuration xmlns="urn:hornetq"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
+            
+            ...
+            
+            &lt;paging-directory>/somewhere/paging-directory&lt;/paging-directory>
+            
+            ...        </programlisting>
+        <para>
+            <table frame="topbot">
+                <title>分页转存的配置参数</title>
+                <tgroup cols="3">
+                    <colspec colname="c1" colnum="1"/>
+                    <colspec colname="c2" colnum="2"/>
+                    <colspec colname="c3" colnum="3"/>
+                    <thead>
+                        <row>
+                            <entry>参数名</entry>
+                            <entry>说明</entry>
+                            <entry>默认值</entry>
+                        </row>
+                    </thead>
+                    <tbody>
+                        <row>
+                            <entry><literal>paging-directory</literal></entry>
+                            <entry>分页转存文件的位置。HornetQ在这个位置下为每个地址建立一个文件夹。</entry>
+                            <entry>data/paging</entry>
+                        </row>
+                    </tbody>
+                </tgroup>
+            </table>
+        </para>
+    </section>
+    <section id="paging.mode">
+        <title>分页转存模式</title>
+        <para>一个地址只要消息的数量超过定义的值,它就转到分页转存的模式。</para>
+        <note>
+            <para>分页转存是针对每个地址设置的。如果你为一个地址配置了一个max-size-bytes,那么每个匹配的地址
+                都有一个最大值的限制。但是这并不表示所有匹配的地址的大小总和受这个参数的限制。</para>
+        </note>
+        <section>
+            <title>配置</title>
+            <para>有关分页转存的配置在主要配置文件(<literal>hornetq-configuration.xml</literal>)
+                  的地址设置的部分内。</para>
+            <programlisting>  &lt;address-settings>
+      &lt;address-setting match="jms.someaddress">
+         &lt;max-size-bytes>104857600&lt;/max-size-bytes>
+         &lt;page-size-bytes>10485760&lt;/page-size-bytes>
+         &lt;address-full-policy>PAGE&lt;/address-full-policy>
+      &lt;/address-setting>
+   &lt;/address-settings>
+        </programlisting>
+            <para>下面列出了可用的参数:</para>
+            <para>
+                <table frame="topbot">
+                    <title>分页转存参数设置</title>
+                    <tgroup cols="3">
+                        <colspec colname="c1" colnum="1"/>
+                        <colspec colname="c2" colnum="2"/>
+                        <colspec colname="c3" colnum="3"/>
+                        <thead>
+                            <row>
+                                <entry>参数名称</entry>
+                                <entry>说明</entry>
+                                <entry>默认值</entry>
+                            </row>
+                        </thead>
+                        <tbody>
+                            <row>
+                                <entry><literal>max-size-bytes</literal></entry>
+                                <entry>地址的最大内存值。当消息占用内存超过此值时,进入分页转存模式。</entry>
+                                <entry>-1 (关闭分页转存功能)</entry>
+                            </row>
+                            <row>
+                                <entry><literal>page-size-bytes</literal></entry>
+                                <entry>每个分页文件的大小。</entry>
+                                <entry>10MiB (10 * 1024 * 1024 字节)</entry>
+                            </row>
+                            <row>
+                                <entry><literal>address-full-policy</literal></entry>
+                                <entry>要使用分页转存,这个参数必须设为PAGE。PAGE表示多余的消息会被保存到磁盘。
+                                    如果设为DROP,那么多余的消息将会被丢弃。如果设为BLOCK,当消息占满设定的最大
+                                    内存时,在客户端消息的发送者将被阻塞,不能向服务器发送更多的消息。</entry>
+                                <entry>PAGE</entry>
+                            </row>
+                        </tbody>
+                    </tgroup>
+                </table>
+            </para>
+        </section>
+    </section>
+    <section>
+        <title>丢弃消息</title>
+        <para>一个地址除了可以分页转存多余的消息外,还可以配置为丢弃多余消息。</para>
+        <para>只要将<literal>address-full-policy</literal>设为<literal>DROP</literal>即可。</para>
+    </section>
+    <section>
+        <title>阻塞发送者(producer)</title>
+        <para>一个地址除了可以分页转存多余的消息外,还可以通过配置使得消息的发送者在消息达到最大值时阻塞消息
+              的发送,以防止服务器由于消息过多而耗尽内存。</para>
+        <para>随着服务器的内存被释放,发送者自动解除阻塞,继续发送消息。</para>
+        <para>这种方式需要将<literal>address-full-policy</literal>设为<literal>BLOCK</literal>。</para>
+        <para>在默认的配置中,所有的地址在消息的量达到10MiB后将阻塞发送者。</para>
+    </section>
+    <section>
+        <title>对于有多个队列绑定的地址的配置注意事项</title>
+        <para>当一个消息被路由到一个绑定了多个队列(queue)的地址时(比如JMS的订阅),在内存中仍然只有一分消息的拷贝。每个
+            队列所持有的不过是它的一个引用。因此,只有所有队列中的消息都成功地传递出去后,这个消息才会从内存中清除。也就是说
+            只要有一个队列没有传递这个消息,那么就会造成这个消息处于未被传递的状态。 </para>
+        <para>例如:</para>
+        <itemizedlist>
+            <listitem>
+                <para>一个地址绑定了10个队列(queue)。</para>
+            </listitem>
+            <listitem>
+                <para>其中一个队列没有传递它的消息(也许因为接收者很慢)。</para>
+            </listitem>
+            <listitem>
+                <para>消息不断增加,触发了分页转存模式。</para>
+            </listitem>
+            <listitem>
+                <para>而其它9个队列尽管发送了消息,但由于地址将多余的消息转存到磁盘,所以它们都是空的。</para>
+            </listitem>
+        </itemizedlist>
+        <para>在这个例子中,必须要等到最后一个队列传递了一些消息后,那些转存的消息被装载回内存,其它队列才有机会得到更多的消息。</para>
+    </section>
+    <section>
+        <title>分页转存与消息的选择器(selector)</title>
+        <note><para>请注意消息选择器只对内存的消息进行操作。如果大量的消息被转存在磁盘中,而其中有些消息与选择器是相匹配的,
+        那么只有内存的消息被传递,这些消息被重新装载入内存后才有可能被传递出去。
+        HornetQ不会扫描在磁盘中的消息来找出与选择器匹配的消息。这样做的话需要实现并管理一种索引机制才能使扫描有效地进行,另外
+        需要其它额外的工作。所有这些如果去完成的话,相当于实现一个关系型数据库!这并不是消息系统的主要任务。如果你要完成的任务是
+        从海量的消息中选择少数消息,那么你很可能需要使用的是一个关系型数据库,不是消息系统。因为这相当于表的查询。</para></note>
+    </section>
+    <section>
+        <title>分页转存与浏览器</title>
+        <note><para>请注意浏览器只对内存中的消息进行操作,它不对转存到磁盘中的消息进行操作。
+        消息是在被路由到任何队列<emphasis>之前</emphasis>进行转存的,所以在转存时刻,它们还没有进入到任何队列中,
+        自然也就不可能出现在对某个队列浏览的結果中。
+        </para></note>
+    </section>
+    <section>
+        <title>分页转存与未通知的消息</title>
+        <note><para>
+            请注意如果消息没有被通知,它会一直留在服务器的内存中,占用着内存资源。只要消息在被接收者收到并通知后,它才
+            会在服务器端被清除,空出内存空间以便转存在磁盘上的消息被装载到内存进行传递。如果没有通知,消息不会被清除,
+            也就不会空出内存空间,转存到磁盘上的消息也就无法装载到内存进行传递。于是在接收端就会呈现出死机的现象。
+            
+            如果消息的通知是依靠<literal>ack-batch-size</literal>的设定进行的批量通知,那么一定要注意不要将
+            分页转存的消息临界值设得小于<literal>ack-batch-size</literal>,否则你的系统可能会发生死机现象!
+        </para></note>
+    </section>
+    
+    
+    <section>
+        <title>例子</title>
+        <para><xref linkend="examples.paging"/>是一个说明如何使用HornetQ的分页转发功能的例子。</para>
+    </section>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/perf-tuning.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/perf-tuning.xml b/docs/user-manual/zh/perf-tuning.xml
new file mode 100644
index 0000000..a6f43ea
--- /dev/null
+++ b/docs/user-manual/zh/perf-tuning.xml
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="perf-tuning">
+    <title>性能调优</title>
+    <para>本章讲述如何优化HornetQ的性能</para>
+    <section>
+        <title>持久层的优化</title>
+        <itemizedlist>
+            <listitem>
+                <para>将消息日志放到单独的物理卷上。如果与其它数据共享,例如事务管理、数据库或其它日志等,那么就会
+                    增加读写的负担,磁头会在多个不同文件之间频繁地移动,极大地降低性能。我们的日志系统采用的是只
+                    添加的模式,目的就是最大程度減少磁头的移动。如果磁盘被共享,那么这一目的将不能达到。另外如果
+                    你使用分页转存或大消息功能时,你最好分别将它们放到各自的独立卷中。</para>
+            </listitem>
+            <listitem>
+                <para>尽量减少日志文件的数量。<literal>journal-min-files</literal>参数的设置应以满足平均
+                    运行需要为准。如果你发现系统中经常有新的日志文件被创建,这说明持久的数据量很大,你需要适当增加
+                    这个参数的值,以使HornetQ更多时候是在重用文件,而不是创建新文件。</para>
+            </listitem>
+            <listitem>
+                <para>日志文件的大小。日志文件的大小最好要与磁盘的一个柱面的容量对齐。默认值是10MiB,它在绝大多数
+                    的系统中能够满足需要。</para>
+            </listitem>
+            <listitem>
+                <para>使用AIO日志。在Linux下,尽量使用AIO型的日志。AIO的可扩展性要好于Java的NIO。</para>
+            </listitem>
+            <listitem>
+                <para>优化 <literal>journal-buffer-timeout</literal>。如果增加它的值,吞吐量会增加,但是
+                    延迟也会增加。</para>
+            </listitem>
+            <listitem>
+                <para>如果使用AIO,适当增加<literal>journal-max-io</literal>可能会提高性能。如果使用的是NIO,
+                    请不要改变这个参数。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+    <section>
+        <title>优化JMS</title>
+        <para>如果使用JMS接口,有以下几个方面可以改进性能。</para>
+        <itemizedlist>
+            <listitem>
+                <para>关闭消息id。如果你不需要这个id,用<literal>MessageProducer</literal>的
+                    <literal>setDisableMessageID()</literal>方法可以关闭它。这可以减少消息的大小并且
+                    省去了创建唯一ID的时间。</para>
+            </listitem>
+            <listitem>
+                <para>关闭消息的时间戳。如果不需要时间戳,用<literal
+                        >MessageProducer</literal>的<literal
+                        >setDisableMessageTimeStamp()</literal>方法将其关闭。</para>
+            </listitem>
+            <listitem>
+                <para>尽量避免使用<literal>ObjectMessage</literal>。<literal>ObjectMessage</literal>会带
+                    来额外的开销。<literal>ObjectMessage</literal>使用Java的序列化将它序列化为字节流。在对小的对象
+                    进行序列化会占用大量的空间,使传输的数据量加大。另外,Java的序列化与其它定制的技术相比要慢。只有在不得
+                    以的情况下才使用它。比如当你在运行时不知道对象的具体类型时,可以用ObjectMessage。</para>
+            </listitem>
+            <listitem>
+                <para>避免使用<literal>AUTO_ACKNOWLEDGE</literal>。 <literal>AUTO_ACKNOWLEDGE</literal>
+                    使得每收到一个消息就要向服务器发送一个通知--这样增加的网络传输的负担。如果可能,尽量使用
+                    <literal>DUPS_OK_ACKNOWLEDGE</literal>或者<literal
+                        >CLIENT_ACKNOWLEDGE</literal>。或者使用事务性会话,将通知在提交时批量完成。</para>
+            </listitem>
+            <listitem>
+                <para>避免持久化消息。默认情况下JMS消息是持久的。如果你不需要持久消息,则将其设定为非持久。
+                    持久消息都会被写到磁盘中,这给系统带来了明显的负担。</para>
+            </listitem>
+            <listitem>
+                <para>将多个发送或通知放到一个事务中完成。这样HornetQ只需要一次网络的往返来发生事务的提交,而不是每次发送
+                    或通知就需要一次网络的往返通迅。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+    <section>
+        <title>其它优化</title>
+        <para>在HornetQ中还有其它一些地方可以优化:</para>
+        <itemizedlist>
+            <listitem>
+                <para>使用异步发送通知。如果你在非事务条件下发送持久的消息,并且要保证在send()返回时持久消息已经到达服
+                    务器,不要使用阻塞式发送的方式,应该使用异步发送通知的方式。参见<xref
+                        linkend="send-guarantees"/>中的说明。</para>
+            </listitem>
+            <listitem>
+                <para>使用预先通知模式。预先通知就是在消息发往客户端<literal>之前</literal>进行通知。它节省了正常
+                    的消息通知所占用的通迅时间。详细的解释请参见
+                        <xref linkend="pre-acknowledge"/>。</para>
+            </listitem>
+            <listitem>
+                <para>关闭安全。将<literal>hornetq-configuration.xml</literal>文件中的<literal>security-enabled</literal>
+                    参数设为<literal>false</literal>以关闭安全。这可以带来一些性能的提高。</para>
+            </listitem>
+            <listitem>
+                <para>关闭持久化。如果不你不需要消息持久化,可以将<literal>hornetq-configuration.xml</literal>
+                    文件中的<literal>persistence-enabled</literal>参数设为false来完全关闭持久功能。</para>
+            </listitem>
+            <listitem>
+                <para>采用延迟方式事务同步。将<literal>hornetq-configuration.xml</literal>文件中的<literal
+                        >journal-sync-transactional</literal>参数设为<literal>false</literal>可以得到
+                    更好的事务持久化的性能。但是这样做可能会造成在发生故障时事务的丢失。有关详细的说明参见
+                    <xref linkend="send-guarantees"/>。</para>
+            </listitem>
+            <listitem>
+                <para>采用延迟方式非事务同步。将<literal>hornetq-configuration.xml</literal>文件中的<literal
+                        >journal-sync-non-transactional</literal>参数设为<literal>false</literal>可以得到
+                    更好的非事务持久化的性能。但是这样做可能会造成在发生故障时持久消息的丢失。有关详细的说明参见
+                    <xref linkend="send-guarantees"/>。</para>
+            </listitem>
+            <listitem>
+                <para>采用非阻塞方式发送消息。将文件<literal>hornetq-jms.xml</literal>中的参数
+                    <literal>block-on-non-durable-send</literal>设为<literal>false</literal>
+                    (使用JMS和JNDI时)或者直接在上进行相应的设置,可以使
+                    消息发送时不阻塞等待服务器的响应。参见 <xref linkend="send-guarantees"/>。</para>
+            </listitem>
+            <listitem>
+                <para>如果你的接收者速度很快,你可以增加consumer-window-size。这样实际上就关闭了流控制的功能。</para>
+            </listitem>
+            <listitem>
+                <para>套接字NIO与旧的IO对比。默认情况下HornetQ在服务器端使用套接字NIO技术,而在客户端则使用旧的(阻塞)
+                    IO(参见传输配置一章<xref linkend="configuring-transports"/>)。NIO比旧的阻塞式IO有更
+                    强的可扩展性,但是也会带来一些延时。如果你的服务器要同时有数千个连接,使用NIO效果比较好。但是如果
+                    连接数并没有这么多,你可以配置接收器使用旧的IO还提高性能。</para>
+            </listitem>
+            <listitem>
+                <para>尽量使用核心接口而不用JMS。使用JMS接口会稍微比使用核心接口性能要低些。这是因为所有JMS操作
+                    实际上要转化为核心的操作才能为服务器所处理。在使用核心接口时,尽量使用带有
+                    <literal>SimpleString</literal>类型参数的方法。<literal>SimpleString</literal>与
+                    java.lang.String不同,它在写入传输层时不需要拷贝。所以你如果在调用中重用<literal
+                        >SimpleString</literal>对象可以避免不必要的拷贝。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+    <section>
+        <title>传输层的优化</title>
+        <itemizedlist>
+            <listitem>
+                <para>TCP缓存大小。如果你的网络速度很快,并且你的主机也很快,你可以通过增加TCP的发送和接收缓存
+                    来提高性能。参见<xref linkend="configuring-transports"/>中的详细说明。</para>
+                <note>
+                     <para>注意某些操作系统,如最近的Linux版本中,包括了TCP自动优化功能。如果再手工设置TCP缓存
+                    会导致自动优化失效,最終使性能下降!
+                     </para>
+                </note>
+            </listitem>
+            <listitem>
+                <para>增加服务器中文件句柄数量限制。如果你的服务器将要处理很多并行的连接,或者客户端在快速不停地
+                    打开和关闭连接,你要确保在服务器端有足够的文件句柄以供使用。</para>
+                <para>这个限制在不同平台有不同的方法。在Linux系统中,你可以编辑文件<literal
+                        >/etc/security/limits.conf</literal>,增加以下内容:
+                    <programlisting>
+serveruser     soft    nofile  20000
+serveruser     hard    nofile  20000                   
+                </programlisting>
+                    它设置了用户<literal>serveruser</literal>可以最多打开20000个文件句柄。</para>
+            </listitem>
+            <listitem>
+                <para>利用参数<literal>batch-delay</literal>并将参数<literal>direct-deliver</literal>
+                    设为false来提高小消息的处理效率。HornetQ在其<literal>hornetq-configuration.xml</literal>
+                    中预先配置了一个连接器/接受器对(<literal>netty-throughput</literal>),并且在
+                    <literal>hornetq-jms.xml</literal>中配置了一个JMS连接工厂(
+                    <literal>ThroughputConnectionFactory</literal>)。它们可以用在小消息的处理应用中以提
+                    供最佳呑吐量。参见<xref
+                        linkend="configuring-transports"/>。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+    <section>
+        <title>优化虚拟机</title>
+        <para>我们强烈建议你使用最新的Java 6虚拟机。它在很多方面对以前Java 5的虚拟机进行了改进,特别是在网络功能方面。
+            这是根据我们内部使用Sun的实现测试的結果,可能不适用于其它的Java实现(例如IBM或JRockit)。</para>
+        <itemizedlist>
+            <listitem>
+                <para>拉圾回收。为了使服务器的运行比较平滑,我们建议使用并行拉圾回收的算法。例如在Sun的JDK使用
+                    JVM选项<literal>-XX:+UseParallelOldGC</literal>.</para>
+            </listitem>
+            <listitem id="perf-tuning.memory">
+                <para>内存设置。尽量为服务器分配更多的内存。HornetQ利用其分页转存技术可以在很少的内存下运行(在
+                    <xref linkend="paging"/>中有说明)。但是如果所有队列都在内存运行,性能将会很好。具体需要
+                    多少内存要由你的队列的大小和数量以及消息的大小和数量决定。使用JVM参数<literal>-Xms</literal>
+                    和<literal>-Xmx</literal>来为你的服务器分配内存。我们建议两个参数的设为相同的值。</para>
+            </listitem>
+            <listitem>
+                <para>主动选项(Aggressive options)。不同JVM有不同的JVM优化参数。对于Sun的Hotspot JVM,在<ulink
+                        url="http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp"
+                        >这里</ulink>有一个完整的参数列表。我们建议至少要使用 <literal
+                        >-XX:+AggressiveOpts</literal> 和<literal>
+                        -XX:+UseFastAccessorMethods</literal>选项。根据不同的平台,可能还有其它一些参数供你使用,
+                    以提高JVM的性能。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+    <section>
+        <title>避免违背设计模式</title>
+        <itemizedlist>
+            <listitem>
+                <para>重用连接/会话/接收者/发送者。最常见的错误恐怕就是每发送/接收一个消息都要创建一个新的连接
+                    /会话/发送者或接收者。这样非常浪费资源。这些对象的创建要占用时间和网络带宽。它们应该进行重用。</para>
+                <note>
+                    <para>有些常用的框架如Spring JMS Template在使用JMS时违背了设计模式。如果你在使用了它后性能
+                        受到了影响。这不是HornetQ的原因!Spring的JMS模板只有与能缓存JMS会话的应用服务器一起使用
+                        才是安全的,并且只能是用于发送消息。使用它在应用服务器中同步接收消息是不安全的。</para>
+                </note>
+            </listitem>
+            <listitem>
+                <para>避免使用繁锁的消息格式。如XML,它会使数据量变大进而降低性能。所以应该尽量避免在消息体中使用XML。</para>
+            </listitem>
+            <listitem>
+                <para>不要为每个请求都创建新的临时队列。临时队列通常用于请求-响应模式的消息应用。在这个模式中消息被发往
+                    一个目的,它带有一个reply-to的头属性指向一个本地的临时队列的地址。当消息被收到后,接收方将响应做为消息发
+                    往那个reply-to指定的临时的地址。如果每发一个消息都创建一个临时队列,那么性能将会受很大影响。正确的
+                    作法是在发送消息时重用临时队列。</para>
+            </listitem>
+            <listitem>
+                <para>尽量不要使用MDB。使用MDB,消息的接收过程要比直接接收复杂得多,要执行很多应用服务器内部的代码。
+                    在设计应用时要问一下是否真的需要MDB?可不可以直接使用消息接收者完成同样的任务?</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/persistence.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/persistence.xml b/docs/user-manual/zh/persistence.xml
new file mode 100644
index 0000000..b7f8528
--- /dev/null
+++ b/docs/user-manual/zh/persistence.xml
@@ -0,0 +1,263 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="persistence">
+    <title>持久化</title>
+    <para>本章我们将描述HornetQ的持久化技术,包括持久化的工作原理和配置方法。</para>
+    <para>HornetQ拥有一个高性能的日志(journal)模块来处理持久化。因此它并不依赖一个外部的数据库或第三方持久化产品。这个
+        日志模块针对消息的处理进行了高度的优化。</para>
+    <para>所谓HornetQ日志是一个<emphasis>只添加</emphasis>系统。它由一组磁盘文件构成。每个文件都是预先创建好的并且
+        大小是固定的。文件在创建时都进行了格式化。随着HornetQ不断地处理消息,如消息的增加、更新、删除等,一个个记录被添加
+        到日志中。当一个日志文件写满时,新记录就会写到下一个文件。</para>
+    <para>由于对日志的写入只是对文件的添加,这样有效减少了随机寻道的操作。而随机寻道的操作是磁盘操作中最耗时的操作。
+        所以这种设计可以使磁头的运动降到最低,效率最高。</para>
+    <para>而文件的大小是可以配置的。这使我们可以将文件大小配置为刚好占满一个磁盘柱面。不过现代的磁盘技术是复杂多样的,
+        我们并不能控制文件与磁盘柱面的对应关系。尽管如此,我们通过最大限度地降低文件对磁盘柱面的占用,来降低磁头的运动。
+        这是因为在同一个柱面的存取只需要盘面的转动而不需要磁头的运动。</para>
+    <para>当被删除的记录越来越多时,有的文件最終会变成一个没有有效记录的文件。这样的文件就可以回收再利用。HornetQ有
+        一套复杂的文件回收算法来判断一个日志文件是否可以被回收。</para>
+    <para>HornetQ还有一套文件整理的算法,它用来将日志文件中不用的空隙移除以达到更高的存贮效率。</para>
+    <para>这个日志系统全面支持事务功能。根据需要它可以支持本地事务或XA型事务。</para>
+    <para>日志系统的大部分是用Java实现的,但是HornetQ在其中实现了一层抽象的文件系统,这样就使得其它的语言实现能
+        方便地“插入”到日志模块中。实际上HornetQ自带有两种实现:</para>
+    <itemizedlist>
+        <listitem>
+            <para>Java <ulink url="http://en.wikipedia.org/wiki/New_I/O">NIO</ulink>。</para>
+            <para>第一种采用的是标准的Java NIO接口来进行文件的操作。它可以在任何安装有Java 1.6或以上的系统中运行。
+                NIO的性能是很高的。</para>
+        </listitem>
+        <listitem id="aio-journal">
+            <para>Linux 异步IO (Asynchronous IO)</para>
+            <para>第二种是采用的Linux系统中的异步IO技术(AIO)。它包括了少量的平台相关的代码(native code)来
+          调用AIO的接口。当数据被保存到磁盘上后,AIO会回调HornetQ进行通知。这样,HornetQ就避免了磁盘写
+                的同步操作。</para>
+            <para>使用AIO通常可以有比NIO更高的性能。</para>
+            <para>采用AIO的日志只能在运行 Linux kernel 2.6 或以上版本的内核的系统中才有。另外你需要安装libaio。
+                有关如何安装libaio请参见 <xref linkend="installing-aio"/>。</para>
+            <para>另外请注意AIO只在以下文件系统上能正确工作:ext2, ext3, ext4, jfs, xfs。其他文件系统如NFS,虽然
+            AIO看上去可以工作,实际上是以较慢的同步的方式在运行。所以不要在NFS上使用日志。</para>
+            <para>有关libaio的更多介绍参见 <xref linkend="libaio"/>。</para>
+            <para>libaio是Linux内核项目的一部分。</para>
+        </listitem>
+    </itemizedlist>
+    <para>标准的HornetQ核心服务器使用了两种日志:</para>
+    <itemizedlist id="persistence.journallist">
+        <listitem>
+            <para>绑定日志</para>
+            <para>这个日志用来保存与绑定有关的数据。其中包括在HornetQ上部署的队列及其属性,还有ID序列计数器。 </para>
+            <para>绑定日志是一个NIO型日志。与消息日志相比它的呑吐量是比较低的。</para>
+            <para>这种日志文件的名字采用<literal>hornetq-bindings</literal>作为前缀。每个文件都有
+                   <literal>bindings</literal>这样的扩展。文件大小是<literal
+                    >1048576</literal>,它的位置在bindings文件夹下。</para>
+        </listitem>
+        <listitem>
+            <para>JMS日志</para>
+            <para>这个日志保存所有JMS相关的数据,包括JMS队列,话题及连接工厂,以及它们的JNDI绑定信息。</para>
+            <para>通过管理接口创建的JMS资源将被保存在这个日志中。但是通过配置文件配置的资源则不保存。只有使用JMS时JMS的日志
+               才被创建。</para>
+            <para>这种日志文件的名字采用<literal>hornetq-jms</literal>作为前缀。每个文件都有
+                   <literal>jms</literal>这样的扩展。文件大小是<literal
+                    >1048576</literal>,它的位置在bindings文件夹下。</para>
+        </listitem>
+        <listitem>
+            <para>消息日志</para>
+            <para>这个日志用来存贮所有消息相关的数据,包括消息本身和重复ID缓存。</para>
+            <para>默认情况下HornetQ总是优先使用AIO型日志。如果AIO型日志不可用(比如在非Linux平台上运行,或系统内核版本不同)
+                它将自动使用NIO型日志。</para>
+            <para>这种日志文件的名字采用<literal>hornetq-data</literal>。作为前缀。每个文件都有
+                 <literal>hq</literal>作为扩展名。默认的文件大小是 <literal
+                    >10485760</literal> (可配置)。文件保存在journal文件夹下。</para>
+        </listitem>
+    </itemizedlist>
+    <para>对于超大消息,Hornet将它们保存在消息日志之外的地方。详见<xref linkend="large-messages"/>.</para>
+    <para>HornetQ还可以在内存不够用时将消息暂存到磁盘上。相关的配置和说明参见<xref linkend="paging"/>。</para>
+    <para>如果不需要持久功能,HornetQ还可以配置成非持久的消息系统。参见<xref linkend="persistence.enabled"/>。</para>
+    <section id="configuring.bindings.journal">
+        <title>配置绑定日志</title>
+        <para>绑定日志的配置参数在 <literal
+                >hornetq-configuration.xml</literal>文件中。</para>
+        <itemizedlist>
+            <listitem>
+                <para><literal>bindings-directory</literal></para>
+                <para>这是绑定日志的位置。默认值是<literal>data/bindings</literal>。</para>
+            </listitem>
+            <listitem>
+                <para><literal>create-bindings-dir</literal></para>
+                <para>如果设置为<literal>true</literal>,那么在 <literal
+                        >bindings-directory</literal> 所设定的位置不存在的情况下会自动创建它。默认值是<literal>true</literal>。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+   <section id="configuring.bindings.jms">
+        <title>配置JMS日志</title>
+        <para>JMS日志的配置与绑定日志共用配置。</para>
+    </section>
+    <section id="configuring.message.journal">
+        <title>配置消息日志</title>
+        <para>消息日志的配置在<literal
+                >hornetq-configuration.xml文件中。</literal></para>
+        <itemizedlist>
+            <listitem id="configuring.message.journal.journal-directory">
+                <para><literal>journal-directory</literal></para>
+                <para>这是消息日志文件所在的目录。默认值是
+                        <literal>data/journal</literal>。</para>
+                <para>为以达到最佳性能,我们建议将日志设定到属于它自己的物理卷中以减少磁头运动。如果日志的位置与
+                    其它进程共用(如数据库,绑定日志或事务的日志等)则磁头的运动显然要增加很多。性能也就没有保证了。</para>
+                <para>如果消息日志是贮存在SAN中,我们建议每个日志都拥有自己的LUN(逻辑单元)。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.create-journal-dir">
+                <para><literal>create-journal-dir</literal></para>
+                <para>如果设为<literal>true</literal>,则当<literal
+                        >journal-directory</literal>所指定的日志目录不存在时,会自动创建它。默认值是<literal>true</literal>。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-type">
+                <para><literal>journal-type</literal></para>
+                <para>有效值是<literal>NIO</literal> 或者 <literal>ASYNCIO</literal>。</para>
+                <para>Choosing <literal>NIO</literal> chooses the Java NIO journal. Choosing
+                        <literal>AIO</literal> 选择作用异步IO型日志。如果你的平台不是Linux或者你没有安装
+                    libaio,HornetQ会自动检测到并使用<literal>NIO</literal>。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-sync-transactional">
+                <para><literal>journal-sync-transactional</literal></para>
+                <para>如果设为true,HornetQ会保证在事务的边界操作时(commit, prepare和rollback)将事务数据
+                    写到磁盘上。默认的值是 <literal>true</literal>。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-sync-non-transactional">
+                <para><literal>journal-sync-non-transactional</literal></para>
+                <para>如果设为true HornetQ将保证每次都将非事务性消息数据(发送和通知)保存到磁盘上。默认值是 <literal>true</literal>。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-file-size">
+                <para><literal>journal-file-size</literal></para>
+                <para>每个日志文件的大于。单位为字节。默认值是 <literal
+                        >10485760</literal> bytes (10MiB)。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-min-files">
+                <para><literal>journal-min-files</literal></para>
+                <para>最少日志文件数。当HornetQ启动时会创建这一数量的文件。</para>
+                <para>创建并初始化日志文件是一项费时的操作,通常不希望这些操作在服务运行时执行。预先创建并初始化这些
+                    日志文件将会使HornetQ在工作时避免浪费不必要的时间。</para>
+                <para>根据你的应用中队列中消息量的实际要求可以适当调节这一参数。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-max-io">
+                <para><literal>journal-max-io</literal></para>
+                <para>写请求被放到一个队列中,然后再被发送到系统中执行。这个参数限制了在任一时间队列中可以存放的最大数量
+                    的写请求。如果队列达到这个限制,任何新的写请求都将被阻塞,直到队列中有空位为止。</para>
+                <para>当使用NIO时,这个参数必须为 <literal
+                    >1</literal>。</para>
+                <para>当使用AIO时,它的默认值是<literal>500</literal>。</para>
+                <para>系统根据不同类型的日志提供不同的默认值。(NIO 为 1,  AIO 为 500)。</para>
+                <para>如果是AIO,这个参数的上限不能超过操作系统的限制(/proc/sys/fs/aio-max-nr),这个值通常为65536.</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-buffer-timeout">
+                <para><literal>journal-buffer-timeout</literal></para>
+                <para>日志模块中有一个内部缓冲。每次写的内容并不是都立即写到磁盘上,而是先放到这个内部缓存中。当这个缓存已满时,或
+                    者超过了一定的时间(timeout),才将缓存的数据存到硬盘上。NIO和AIO都有这一特点。采用缓存的方式可以很好地满足
+                    大量并发写数据的需要。</para>
+                <para>这一参数规定了缓存的失效时间,如果过了这个时间,即使缓存还没有满,也将数据写入磁盘中。AIO的写入
+                    能力通常要比NIO强。因此系统对于不同类型的日志有着不同的默认值。( NIO的默认值是 3333333 纳秒,即每秒300次。
+                    而AIO则是500000纳秒,即每秒2000次。)</para>
+                <note>
+                    <para>加在这个参数有可能会增加系统的呑吐量,但可能会降低系统的响应能力。通常情况下默认值应该是比较理想的折中选择。</para>
+                </note>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-buffer-size">
+                <para><literal>journal-buffer-size</literal></para>
+                <para>AIO的定时缓冲的大小,默认值为<literal
+                        >490KiB</literal>。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-compact-min-files">
+                <para><literal>journal-compact-min-files</literal></para>
+                <para>进行整理压缩日志操作的最少文件数。当日志文件少于这个数时,系统不会进行文件的整理压缩。</para>
+                <para>默认值是 <literal>10</literal>。</para>
+            </listitem>
+            <listitem id="configuring.message.journal.journal-compact-percentage">
+                <para><literal>journal-compact-percentage</literal></para>
+                <para>开始整理压缩的界限值。当有效数据的比例少于这个值时系统开始整理压缩日志。注意是否进行压缩还要
+                    受到、<literal>journal-compact-min-files</literal>参数的控制。</para>
+                <para>这一参数的默认值是 <literal>30</literal>。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+    <section id="disk-write-cache">
+        <title>关于关闭磁盘写缓冲的重要说明</title>
+        <warning>
+            <para>大多数磁盘产品都有硬件的写缓冲。写缓冲可以明显提高写的效率。</para>
+            <para>这样的写缓冲与调用fsync()这样的系统函数无关,也与在Java程序中进行的同步调用无关!</para>
+            <para>默认情况下许多磁盘的写缓冲是打开的。这样的情况下,即使你在程序中调用了同步操作也不能保证你的数据
+                就真正写到磁盘介质中了。因此如果故障发生时,关键的数据是有可能丢失的。</para>
+            <para>有些昂贵的磁盘采用非挥发性的介质或有电源的缓冲来保证故障情况下不丢失数据。但是你仍需要对这些硬盘进行测试!</para>
+            <para>如果你的磁盘没有非挥发性或有电源的缓存,也不是某种冗余盘阵(如RAID)。要想保证关键数据不丢失,你需要
+                关闭磁盘的写缓冲。</para>
+            <para>需要知道的是关闭磁盘的写缓冲会显著降低磁盘的性能。如果平时你在使用磁盘时都打开写缓冲,那么当你为了
+                保护你的数据而关闭它时,你可能感到两种情况下的明显差异。</para>
+            <para>Linux可以用<literal>hdparm</literal> (IDE硬盘) 或 <literal>sdparm</literal> 或
+                    <literal>sginfo</literal> (SDSI/SATA 硬盘)工具来查看并修改磁盘的写缓冲。</para>
+            <para>在Windows平台上你可以右键点击硬盘图标,并选择“属性”菜单项来操作。</para>
+        </warning>
+    </section>
+    <section id="installing-aio">
+        <title>安装AIO</title>
+        <para>Java NIO日志的性能是很好的。但是如果你是在Linux 内核2.6版本以上的系统中运行HornetQ,我们强烈建议
+            你使用 <literal>AIO</literal>日志,以获得更佳的性能。</para>
+        <para>在早期的Linux版本中或其它操作系统中不可以使用 AIO日志。</para>
+        <para>如果你的Linux内核是2.6版本或以上但没有安装 <literal
+                >libaio</literal>,按照下列步骤可以很容易地安装它:</para>
+        <para>使用 yum,(如 Fedora 或 Red Hat Enterprise Linux):
+            <programlisting>yum install libaio</programlisting></para>
+        <para>使用 aptitude, (如 Ubuntu 或 Debian):
+            <programlisting>apt-get install libaio</programlisting></para>
+    </section>
+    <section id="persistence.enabled">
+        <title>配置HornetQ不使用持久化</title>
+        <para>在一些情况下消息系统并不需要持久化。这时可以配置HornetQ不使用持久层。只要将<literal
+                >hornetq-configuration.xml</literal>文件中的<literal>persistence-enabled</literal>
+              参数设为<literal>false</literal>即可。 </para>
+        <para>注意如果你将该参数设为 false来关闭持久化,就意味着所有的绑定数据、消息数据、超大消息数据、重复ID缓冲以及转移(paging)数据都将不会被持久。</para>
+    </section>
+    <section id="persistence.importexport">
+        <title>导入入/导出日志数据</title>
+        <para>有时你需要使用导入/导出工具来查看日志文件的记录。这个导入/导出工具类在hornetq-core.jar文件中。
+          使用以下命令可以将日志文件导出为文本文件:</para>
+        <para><literal>java -cp hornetq-core.jar org.hornetq.core.journal.impl.ExportJournal
+                &lt;JournalDirectory> &lt;JournalPrefix> &lt;FileExtension> &lt;FileSize>
+                &lt;FileOutput></literal></para>
+        <para>要将日志文件导入,使用下面的命令(注意你需要netty.jar):</para>
+        <para><literal>java -cp hornetq-core.jar:netty.jar org.hornetq.core.journal.impl.ImportJournal
+                &lt;JournalDirectory> &lt;JournalPrefix> &lt;FileExtension> &lt;FileSize>
+                &lt;FileInput></literal></para>
+        <itemizedlist>
+            <listitem>
+                <para>JournalDirectory:文件的位置,如./hornetq/data/journal</para>
+            </listitem>
+            <listitem>
+                <para>JournalPrefix: 日志文件的前缀。<link linkend="persistence.journallist">这里</link>有关于前缀的详细描述。</para>
+            </listitem>
+            <listitem>
+                <para>FileExtension: 文件的扩展名。详细讨论参见<link linkend="persistence.journallist">这里</link>。
+                    </para>
+            </listitem>
+            <listitem>
+                <para>FileSize:日志文件的大小。详细讨论参见<link linkend="persistence.journallist">这里</link>。</para>
+            </listitem>
+            <listitem>
+                <para>FileOutput:输出的文本文件名。</para>
+            </listitem>
+        </itemizedlist>
+    </section>
+
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/pre-acknowledge.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/pre-acknowledge.xml b/docs/user-manual/zh/pre-acknowledge.xml
new file mode 100644
index 0000000..a7f42dd
--- /dev/null
+++ b/docs/user-manual/zh/pre-acknowledge.xml
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="pre-acknowledge">
+   <title>预先通知模式(pre-acknowledge)</title>
+   <para>JMS 规定了三种消息通知方式</para>
+   <itemizedlist>
+      <listitem>
+         <para><literal>AUTO_ACKNOWLEDGE</literal></para>
+      </listitem>
+      <listitem>
+         <para><literal>CLIENT_ACKNOWLEDGE</literal></para>
+      </listitem>
+      <listitem>
+         <para><literal>DUPS_OK_ACKNOWLEDGE</literal></para>
+      </listitem>
+   </itemizedlist>
+   <para>还有一种情况JMS不支持:应用程序在出现故障时可以容忍消息丢失,这样可以在消息在传递给客户
+      端<emphasis>之前</emphasis>就通知服务器。</para>
+   <para>HornetQ支持这种模式,称为<emphasis>pre-acknowledge</emphasis>。</para>
+   <para>这种模式的缺点是消息在通知后,如果系统出现故障时,消息可能丢失。并且在系统重启后该消息
+      不能恢复。</para>
+   <para>使用<literal>pre-acknowledgement</literal>模式可以节省网络传输和CPU处理资源。</para>
+   <para>股票价格更新是一个适用于此模式的例子。如果因为服务器故障丢失了一些消息,等服务器重启后新的
+      股票更新消息很快到达,以前丢失的过时的股票消息即使丢失也无关紧要。 </para>
+   <note>
+      <para>注意如果你使用pre-acknowledge模式,在接收消息端不能支持事务。因为这个模式不是在提交时
+      通知消息,是在消息在传递之前就通知了。</para>
+   </note>
+   <section id="pre-acknowledge.configure">
+      <title>使用PRE_ACKNOWLEDGE</title>
+      <para>这个模式在<literal>hornetq-jms.xml</literal>文件中
+      的<literal>connection factory</literal>下配置:</para>
+      <programlisting>&lt;connection-factory name="ConnectionFactory">
+      &lt;connectors>
+         &lt;connector-ref connector-name="netty-connector"/>
+      &lt;/connectors>
+      &lt;entries>
+         &lt;entry name="ConnectionFactory"/>
+      &lt;/entries>
+      &lt;pre-acknowledge>true&lt;/pre-acknowledge>
+&lt;/connection-factory></programlisting>
+      <para>另一个选择是使用JMS接口来设置pre-acknowledgement模式。只需要在创建JMS会话(session)
+         时使用<literal>HornetQSession.PRE_ACKNOWLEDGE</literal>常数即可。</para>
+      <programlisting>
+// messages will be acknowledge on the server *before* being delivered to the client
+Session session = connection.createSession(false, HornetQSession.PRE_ACKNOWLEDGE);
+      </programlisting>
+      <para>你还可以直接在<literal>HornetQConnectionFactory</literal>实例上设置该模式。</para>
+      <para>另外,如果使用核心接口,则在<literal>ClientSessionFactory</literal>实例上直接
+            设置该模式。</para>
+   </section>
+   <section>
+      <title>例子</title>
+      <para>参见<xref linkend="examples.pre-acknowledge"/>。这是一个使用JMS的例子。</para>
+   </section>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/preface.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/preface.xml b/docs/user-manual/zh/preface.xml
new file mode 100644
index 0000000..fe25e7f
--- /dev/null
+++ b/docs/user-manual/zh/preface.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="preface">
+    <title>前言</title>
+    <para>什么是HornetQ?</para>
+    <itemizedlist>
+        <listitem>
+            <para>HornetQ 是一个开源的软件项目。它的目标是一个多协议、可嵌入、高性能、可集群的异步消息系统。</para>
+        </listitem>
+        <listitem>
+            <para>HornetQ 是一个消息中间件(MoM)。有关MoM和其它消息相关的概念解释请参见 <xref linkend="messaging-concepts"
+                />。</para>
+        </listitem>
+        <listitem>
+            <para>要了解有关HornetQ的更多信息请访问 <ulink url="http://www.jboss.org/community/wiki/HornetQGeneralFAQs"></ulink>。</para>
+        </listitem>
+    </itemizedlist>
+    <para>为什么要使用HornetQ? 以下给出了几个理由:</para>
+    <itemizedlist>
+        <listitem>
+            <para>HornetQ是100%的开源软件。 HornetQ 采用 Apache v 2.0开源协议,对用户的限制最小。</para>
+        </listitem>
+        <listitem>
+            <para>HornetQ的设计强调可用性。</para>
+        </listitem>
+        <listitem>
+            <para>采用Java语言编写。可以在任何Java 6+ 的平台上运行。这几乎包括了从Windows到IBM mainframes的每个平台。</para>
+        </listitem>
+        <listitem>
+            <para>性能出众。不但对非持久化消息的处理性能达到了非常高的性能。独特高效的日志(journal)使持久消息处理接近非持久消息的性能。</para>
+        </listitem>
+        <listitem>
+            <para>功能全面。不仅拥有其它成熟消息产品所具有的全部功能,而且还有很多独特的功能。</para>
+        </listitem>
+        <listitem>
+            <para>HornetQ的设计遵从了简约的原则。对第三方软件的依赖极少。根据不同的需要,
+                  HornetQ可以单独运行,也可以运行于JEE应用服务器中。它还可以嵌入到你自己的应用程序中。</para>
+        </listitem>
+        <listitem>
+            <para>完美的可获得性。HornetQ提供自动客户端失效备援(automatic client failover)功能,能保证在服务器故障时没有消息丢失或消息重复。</para>
+        </listitem>
+        <listitem>
+            <para>超级灵活的集群方案。可以控制集群进行消息负载均衡的方式。分布在不同地理位置的各个集群间可以通过非可靠的网络连接形成一个全球网络。
+                  还可以非常灵活地配置消息路由。</para>
+        </listitem>
+        <listitem>
+            <para>请访问 <ulink
+                    url="http://www.jboss.org/community/wiki/HornetQFeatures">wiki
+                    </ulink>来全面了解HornetQ的所有功能介绍。</para>
+        </listitem>
+    </itemizedlist>
+</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/project-info.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/project-info.xml b/docs/user-manual/zh/project-info.xml
new file mode 100644
index 0000000..820dc93
--- /dev/null
+++ b/docs/user-manual/zh/project-info.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- ============================================================================= -->
+<!-- Copyright © 2009 Red Hat, Inc. and others.                                    -->
+<!--                                                                               -->
+<!-- The text of and illustrations in this document are licensed by Red Hat under  -->
+<!-- a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). -->
+<!--                                                                               -->
+<!-- An explanation of CC-BY-SA is available at                                    -->
+<!--                                                                               -->
+<!--            http://creativecommons.org/licenses/by-sa/3.0/.                    -->
+<!--                                                                               -->
+<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation -->
+<!-- of it, you must provide the URL for the original version.                     -->
+<!--                                                                               -->
+<!-- Red Hat, as the licensor of this document, waives the right to enforce,       -->
+<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent        -->
+<!-- permitted by applicable law.                                                  -->
+<!-- ============================================================================= -->
+<chapter id="project-info">
+   <title>项目信息</title>
+   <para>HornetQ的官方网址是 <ulink url="http://hornetq.org/"
+         >http://hornetq.org/</ulink>.</para>
+   <section id="download.software">
+      <title>软件下载</title>
+      <para>HornetQ的下载地址为:<ulink
+            url="http://hornetq.org/downloads.html">http://hornetq.org/downloads.html</ulink></para>
+   </section>
+   <section id="download.git">
+      <title>其它相关信息</title>
+      <para>
+         <itemizedlist>
+            <listitem>
+               <para>HornetQ的 <ulink
+                     url="http://www.jboss.org/community/wiki/HornetQ">wiki</ulink></para>
+            </listitem>
+            <listitem>
+               <para>如果在使用HornetQ中发生任何问题,可以去我们的 <ulink
+                     url="http://www.jboss.org/index.html?module=bb&amp;op=viewforum&amp;f=312">用户论坛
+                     </ulink></para>
+            </listitem>
+            <listitem>
+               <para>如果你有开发方面的问题与想法,请访问我们的 <ulink
+                     url="http://www.jboss.org/index.html?module=bb&amp;op=viewforum&amp;f=313"
+                     >开发论坛</ulink></para>
+            </listitem>
+            <listitem>
+               <para>请加入我们的<ulink url="irc://irc.freenode.net:6667/hornetq"
+                     >IRC频道</ulink>与我们的核心开发工程师交流。</para>
+            </listitem>
+            <listitem>
+               <para>我们项目有自己的 <ulink url="http://hornetq.blogspot.com/">博客</ulink></para>
+            </listitem>
+            <listitem>
+               <para>还可以跟踪我们的<ulink url="http://twitter.com/hornetq">twitter</ulink></para>
+            </listitem>
+            <listitem>
+               <para>HornetQ的Git代码库地址 <ulink
+                     url="https://github.com/hornetq/hornetq"
+                     >https://github.com/hornetq/hornetq</ulink></para>
+            </listitem>
+            <listitem>
+               <para>每次发布的版本标签都在<ulink
+                     url="https://github.com/hornetq/hornetq/tags"
+                     >https://github.com/hornetq/hornetq/tags</ulink>下能找到。</para>
+            </listitem>
+         </itemizedlist>
+      </para>
+      <para>Red Hat 公司聘请全职工程师进行HornetQ项目的开发工作,他们是: <itemizedlist>
+            <listitem>
+               <para>
+                  <ulink url="http://jbossfox.blogspot.com">Tim Fox</ulink> (项目主管)</para>
+            </listitem>
+            <listitem>
+               <para>Howard Gao</para>
+            </listitem>
+            <listitem>
+               <para><ulink url="http://jmesnil.net/weblog/">Jeff Mesnil</ulink></para>
+            </listitem>
+            <listitem>
+               <para>Clebert Suconic</para>
+            </listitem>
+            <listitem>
+               <para>Andy Taylor</para>
+            </listitem>
+         </itemizedlist></para>
+      <para> 另外我们还有长期的和刚加入的一些贡献者,非常感謝他们的帮助。参见<ulink
+            url="http://jboss.org/hornetq/community/team.html">完整的贡献者名单</ulink>。 </para>
+   </section>
+</chapter>


Mime
View raw message