[hornetq-commits] JBoss hornetq SVN: r9263 - branches/HnetQ_323_cn/docs/user-manual/zh.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed May 26 02:32:25 EDT 2010


Author: gaohoward
Date: 2010-05-26 02:32:25 -0400 (Wed, 26 May 2010)
New Revision: 9263

Modified:
   branches/HnetQ_323_cn/docs/user-manual/zh/appserver-integration.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/configuring-transports.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/examples.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/flow-control.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/ha.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/paging.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/perf-tuning.xml
   branches/HnetQ_323_cn/docs/user-manual/zh/thread-pooling.xml
Log:
sync docs


Modified: branches/HnetQ_323_cn/docs/user-manual/zh/appserver-integration.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/appserver-integration.xml	2010-05-25 14:49:43 UTC (rev 9262)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/appserver-integration.xml	2010-05-26 06:32:25 UTC (rev 9263)
@@ -745,6 +745,45 @@
                       </tgroup>
                    </table>
         </section>
+       <section>
+          <title>配置适配器访问单独的HornetQ服务器</title>
+          <para>在有的情况下,消息服务器与应用服务器运行在不同的机器上。</para>
+          <para>这时你需要同时配置内部和外部适配器。</para>
+          <para>为了使MDB能接收远程HornetQ服务器的消息,你需要配置ra.xml文件。这个文件的位置是<literal>deploy/hornet-ra.rar/META-INF</literal>。你需要配置一个netty连接器(不是invm连接器)及其传输参数。下面是一个配置的例子:</para>
+          <programlisting>
+            &lt;resourceadapter-class&gt;org.hornetq.ra.HornetQResourceAdapter&lt;/resourceadapter-class&gt;
+              &lt;config-property&gt;
+                 &lt;description&gt;The transport type&lt;/description&gt;
+                 &lt;config-property-name&gt;ConnectorClassName&lt;/config-property-name&gt;
+                 &lt;config-property-type&gt;java.lang.String&lt;/config-property-type&gt;
+                 &lt;config-property-value&gt;org.hornetq.core.remoting.impl.netty.NettyConnectorFactory&lt;/config-property-value&gt;
+              &lt;/config-property&gt;
+              &lt;config-property&gt;
+                 &lt;description&gt;The transport configuration. These values must be in the form of key=val;key=val;&lt;/description&gt;
+                 &lt;config-property-name&gt;ConnectionParameters&lt;/config-property-name&gt;
+                 &lt;config-property-type&gt;java.lang.String&lt;/config-property-type&gt;
+                 &lt;config-property-value&gt;host=127.0.0.1;port=5446&lt;/config-property-value&gt;
+              &lt;/config-property>
+          </programlisting>
+          <para>上面的配置中,适配器连接到一个运行在本机上端口为5446的服务器。</para>
+          <para>同时你还需要配置外部的连接,也连接到这个服务器。这需要配置<literal>deploy/hornetq.sar</literal>
+             下的jms-ds.xml文件,或者创建一个新的配置文件,文件名必须以-ds.xml结尾。</para>
+          <para>下面是一个配置的例子。</para>
+          <programlisting>
+             &lt;tx-connection-factory&gt;
+              &lt;jndi-name&gt;RemoteJmsXA&lt;/jndi-name&gt;
+              &lt;xa-transaction/&gt;
+              &lt;rar-name&gt;hornetq-ra.rar&lt;/rar-name&gt;
+              &lt;connection-definition&gt;org.hornetq.ra.HornetQRAConnectionFactory&lt;/connection-definition&gt;
+              &lt;config-property name="SessionDefaultType" type="java.lang.String"&gt;javax.jms.Topic&lt;/config-property&gt;
+              &lt;config-property name="ConnectorClassName" type="java.lang.String"&gt;org.hornetq.core.remoting.impl.netty.NettyConnectorFactory&lt;/config-property&gt;
+              &lt;config-property name="ConnectionParameters" type="java.lang.String"&gt;host=127.0.0.1;port=5446&lt;/config-property&gt;
+              &lt;max-pool-size&gt;20&lt;/max-pool-size&gt;
+           &lt;/tx-connection-factory&gt;
+          </programlisting>
+          <para>这个配置同样是连接到运行在本机上的端口为5446的HornetQ服务器。JEE模块可以通过JNDI查找
+                <literal>java:/RemoteJmsXA</literal>来使用外部的服务了。</para>
+       </section>
     </section>
     <section>
         <title>高可获得性JNDI (HA-JNDI)</title>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/configuring-transports.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/configuring-transports.xml	2010-05-25 14:49:43 UTC (rev 9262)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/configuring-transports.xml	2010-05-26 06:32:25 UTC (rev 9263)
@@ -152,14 +152,15 @@
             <para>Netty TCP的所有连接都是从客户端发起的。服务器端不向客户端发起任何连接。在有防火墙的环境中,这种方式
                 是比较适合的。因为防火墙只允许单方向的连接。</para>
             <para>在<literal>org.hornetq.core.remoting.impl.netty.TransportConstants</literal>类中定义了所
-                有的配置参数的名称(key)。它们既用于配置接收器以用于配置连接器。下面列出的参数用以配置一个简单的Netty TCP:</para>
+                有的配置参数的名称(key)。它们当中绝大多娄既用于配置接收器也用于配置连接器,有一些只适用于接收器。
+                下面列出的参数用以配置一个简单的Netty TCP:</para>
             <itemizedlist>
                 <listitem>
                     <para><literal>use-nio</literal>。如果设为<literal>true</literal>则使用非阻塞的Java
                         NIO。如果<literal>false</literal>则使用传统的阻塞方式的Java IO。</para>
-                    <para>我们建议使用Java NIO。因为Java NIO不是为每一个连接分配一个线程,所以它要比传统的阻塞式
-                        Java IO具有更强的并发连接的处理能力。另外我们还建议使用Java 6的NIO以获得最佳性能。这个参
-                        数的默认值在服务器端是<literal>true</literal>,在客户端是<literal>false</literal>。
+                    <para>我们建议使用Java NIO处理并行连接。因为Java NIO不是为每一个连接分配一个线程,所以它要比传统的阻塞式
+                        Java IO具有更强的并发连接的处理能力。如果你不需要处理并发连接,那么使用旧的阻塞式的IO性能会好一些。这个参
+                        数的默认值在服务器端是<literal>false</literal>,在客户端是<literal>false</literal>。
                         </para>
                 </listitem>
                 <listitem>
@@ -200,6 +201,25 @@
                     <para><literal>tcp-receive-buffer-size</literal>。这个参数指定了TCP接收缓冲的大小,单位是字节。
                         默认值是<literal>32768</literal>字节(32KiB)。</para>
                 </listitem>
+                <listitem>
+                    <para><literal>batch-delay</literal>。HornetQ可以通过配置该参数,在数据包写入传输层之前有一个
+                        最大延时(毫秒),达到批量写入的目的。这样可以提高小消息的发送效率。但这样做会增加单个消息的平均发送
+                        延迟。默认值为<literal>0</literal>毫秒。</para>
+                </listitem>
+                <listitem>
+                    <para><literal>direct-deliver</literal>。消息到达服务器后,默认是由一个不同的线程来将消息传递
+                        到接收者。这样可以使服务的呑吐量和可扩展性达到最佳,特别是在多核的系统上效果更为明显。但是线程切换
+                        会带来一些传递的延迟。如果你希望延迟最小,并不在意呑吐量的话,可以将参数<literal
+                            >direct-deliver</literal>设为true。默认值是<literal>true</literal>。如果你更希望有
+                        较大的呑吐量的话,将它设为<literal>false</literal>。</para>
+                </listitem>
+                <listitem>
+                    <para><literal>nio-remoting-threads</literal>。如果使用NIO,默认情况下HornetQ会使用系统中处理
+                        器内核(或超线程)数量三倍的线程来处理接收的数据包。内核的数量是通过调用<literal
+                            >Runtime.getRuntime().availableProcessors()</literal>来得到的。如果你想改变这个数量,
+                        你可以设定本参数。默认的值是<literal>-1</literal>,表示线程数为<literal
+                            >Runtime.getRuntime().availableProcessors()</literal> * 3。</para>
+                </listitem>
             </itemizedlist>
         </section>
         <section>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/examples.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/examples.xml	2010-05-25 14:49:43 UTC (rev 9262)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/examples.xml	2010-05-26 06:32:25 UTC (rev 9263)
@@ -399,6 +399,10 @@
             <title>资源适配器的配置(JCA)</title>
             <para>本例展示了如何配置HornetQ的JCA适配器的各种参数。</para>
         </section>
+        <section>
+            <title>资源适配器运程服务器的配置</title>
+            <para>本例展示了如何配置HornetQ的JCA适配器来与远程的HornetQ服务器通迅。</para>
+        </section>
         <section id="examples.javaee.jms-bridge">
             <title>JMS 桥(Bridge)</title>
             <para>本例展示了如何使用HornetQ的JMS bridge。</para>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/flow-control.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/flow-control.xml	2010-05-25 14:49:43 UTC (rev 9262)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/flow-control.xml	2010-05-26 06:32:25 UTC (rev 9263)
@@ -203,8 +203,10 @@
             <para>上面的例子将JMS队列"exampleQueue"的最大内存值设为
                100000 字节并且阻塞发送者以防止消息量超过这个值。</para>
             <para>注意必须设置 <literal>BLOCK</literal>的策略才能打开限定发送者窗口控制。</para>
-            <para>请注意默认的<literal>address-full-policy</literal> 是
-                  <literal>PAGE</literal>。请参阅分页转存(<xref linkend="paging" />)的相关章节作进一步的了解。</para>
+            <note><para>请注意默认的配置下当一个地址中的消息量达到10MiB时,其所有的消息发送者将变为阻塞状态,也就是说
+                  在没有接收的情况下你不能向一个地址不阻塞地一次发送超过10MiB的消息。要想增加这个限制,可以加大
+                  <literal>max-size-bytes</literal>参数的值,或者调整地址的消息容量限制。</para>
+            </note>
          </section>
       </section>
       <section>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/ha.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/ha.xml	2010-05-25 14:49:43 UTC (rev 9262)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/ha.xml	2010-05-26 06:32:25 UTC (rev 9263)
@@ -98,8 +98,8 @@
             </section>
             <section id="ha.mode.shared">
                 <title>存贮共享</title>
-                <para>使用存贮共享,主服务器与备份服务器共用<emphasis>相同</emphasis>的日志,通常是一个共享的
-                      文件系统。</para>
+                <para>使用存贮共享,主服务器与备份服务器共用<emphasis>相同</emphasis>目录的日志数据,通常是一个共享的
+                      文件系统。这包括转存目录,日志目录,大消息及绑定日志。</para>
                 <para>当发生失效备援时,工作由备份服务器接管。它首先从共享的文件系统中读取主服务器的持久数据,然后
                     才能接受客户端的连接请求。</para>
                 <para>与数据复制方式不同的是这种方式需要一个共享的文件系统,主服务器与备份服务器都可以访问。典型的

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/paging.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/paging.xml	2010-05-25 14:49:43 UTC (rev 9262)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/paging.xml	2010-05-26 06:32:25 UTC (rev 9263)
@@ -139,6 +139,7 @@
               的发送,以防止服务器由于消息过多而耗尽内存。</para>
         <para>随着服务器的内存被释放,发送者自动解除阻塞,继续发送消息。</para>
         <para>这种方式需要将<literal>address-full-policy</literal>设为<literal>BLOCK</literal>。</para>
+        <para>在默认的配置中,所有的地址在消息的量达到10MiB后将阻塞发送者。</para>
     </section>
     <section>
         <title>对于有多个队列绑定的地址的配置注意事项</title>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/perf-tuning.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/perf-tuning.xml	2010-05-25 14:49:43 UTC (rev 9262)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/perf-tuning.xml	2010-05-26 06:32:25 UTC (rev 9263)
@@ -80,6 +80,10 @@
                 <para>避免持久化消息。默认情况下JMS消息是持久的。如果你不需要持久消息,则将其设定为非持久。
                     持久消息都会被写到磁盘中,这给系统带来了明显的负担。</para>
             </listitem>
+            <listitem>
+                <para>将多个发送或通知放到一个事务中完成。这样HornetQ只需要一次网络的往返来发生事务的提交,而不是每次发送
+                    或通知就需要一次网络的往返通迅。</para>
+            </listitem>
         </itemizedlist>
     </section>
     <section>
@@ -159,6 +163,15 @@
                 </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>
@@ -175,13 +188,6 @@
                     <xref linkend="paging"/>中有说明)。但是如果所有队列都在内存运行,性能将会很好。具体需要
                     多少内存要由你的队列的大小和数量以及消息的大小和数量决定。使用JVM参数<literal>-Xms</literal>
                     和<literal>-Xmx</literal>来为你的服务器分配内存。我们建议两个参数的设为相同的值。</para>
-                <para>HornetQ可以定期地检测JVM的内存并报告是否可用内存低于指定的值。参考这个报告的值可以对JVM的内存
-                    及分页转存进行合理的设定。这个检测功能默认是关闭的。如要使用,需要配置
-                    <literal>hornetq-configuration.xml</literal>文件中的参数
-                    <literal>memory-measure-interval</literal>,它表示检测的频度(单位毫秒)。
-                    当可用内存低于指定的值时,在日志会输出一个警告。这个指定的内存值也在文件<literal
-                        >hornetq-configuration.xml</literal>中定义,参数名为<literal
-                        >memory-warning-threshold</literal>(默认值25%)。</para>
             </listitem>
             <listitem>
                 <para>主动选项(Aggressive options)。不同JVM有不同的JVM优化参数。对于Sun的Hotspot JVM,在<ulink
@@ -200,8 +206,9 @@
                 <para>重用连接/会话/接收者/发送者。最常见的错误恐怕就是每发送/接收一个消息都要创建一个新的连接
                     /会话/发送者或接收者。这样非常浪费资源。这些对象的创建要占用时间和网络带宽。它们应该进行重用。</para>
                 <note>
-                    <para>有些常用的框架如Spring JMS Template在使用JMS时违背了设计模式。如果你使用了它,性能
-                        就会受到影响。这不是HornetQ的原因!</para>
+                    <para>有些常用的框架如Spring JMS Template在使用JMS时违背了设计模式。如果你在使用了它后性能
+                        受到了影响。这不是HornetQ的原因!Spring的JMS模板只有与能缓存JMS会话的应用服务器一起使用
+                        才是安全的,并且只能是用于发送消息。使用它在应用服务器中同步接收消息是不安全的。</para>
                 </note>
             </listitem>
             <listitem>

Modified: branches/HnetQ_323_cn/docs/user-manual/zh/thread-pooling.xml
===================================================================
--- branches/HnetQ_323_cn/docs/user-manual/zh/thread-pooling.xml	2010-05-25 14:49:43 UTC (rev 9262)
+++ branches/HnetQ_323_cn/docs/user-manual/zh/thread-pooling.xml	2010-05-26 06:32:25 UTC (rev 9263)
@@ -24,6 +24,13 @@
         <title>服务器端线程的管理</title>
         <para>每个HornetQ服务器都有一个线程池作为一般线程使用,另外还有一个可计划线程池。Java的可计划线程池不能作为
             标准的线程池使用,因此我们采用了两个单独的线程池。</para>
+        <para>当使用旧的(阻塞)IO时,使用了一个单独的线程池来处理连接。但是旧的IO要求一个线程配一个连接,所以如果你
+            的应用有很多并发的连接,这个线程池会很快用光所有的线程,造成服务器出现“挂起”现象。因此,对于大量并发连接
+            的应用,一定要使用NIO。</para>
+        <para>如果使用NIO,默认情况下HornetQ会使用系统中处理器内核(或超线程)数量三倍的线程来处理接收的数据包。
+            内核的数量是通过调用<literal>Runtime.getRuntime().availableProcessors()</literal>来得到
+            的。如果你想改变这个数量,可以设置传输层配置参数<literal>nio-remoting-threads</literal>。
+            参见<xref linkend="configuring-transports"/>。</para>
         <para>另外在其它一些地方直接使用了线程,没有用线程池。我们将对这些线程作出解释。</para>
         <section id="server.scheduled.thread.pool">
             <title>服务器端可计划线程池</title>
@@ -47,7 +54,7 @@
                 处于忙的状态并且线程数已经达到n时,任何新的请求都将被阻塞直到有线程空闲为止。在设置线程上限时,我们建议
                 要非常谨慎。因为如何线程数量过低会造成死锁情况的发生。</para>
             <para><literal>thread-pool-max-size</literal>的默认值是<literal
-                    >-1</literal>,即线程池没有上限。</para>
+                    >30</literal>。</para>
             <para>参见<ulink
                     url="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ThreadPoolExecutor.html"
                     >J2SE javadoc</ulink>有关无边界(缓存)和有边界(固定)线程池的解释。</para>



More information about the hornetq-commits mailing list