[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>
+ <resourceadapter-class>org.hornetq.ra.HornetQResourceAdapter</resourceadapter-class>
+ <config-property>
+ <description>The transport type</description>
+ <config-property-name>ConnectorClassName</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</config-property-value>
+ </config-property>
+ <config-property>
+ <description>The transport configuration. These values must be in the form of key=val;key=val;</description>
+ <config-property-name>ConnectionParameters</config-property-name>
+ <config-property-type>java.lang.String</config-property-type>
+ <config-property-value>host=127.0.0.1;port=5446</config-property-value>
+ </config-property>
+ </programlisting>
+ <para>上面的配置中,适配器连接到一个运行在本机上端口为5446的服务器。</para>
+ <para>同时你还需要配置外部的连接,也连接到这个服务器。这需要配置<literal>deploy/hornetq.sar</literal>
+ 下的jms-ds.xml文件,或者创建一个新的配置文件,文件名必须以-ds.xml结尾。</para>
+ <para>下面是一个配置的例子。</para>
+ <programlisting>
+ <tx-connection-factory>
+ <jndi-name>RemoteJmsXA</jndi-name>
+ <xa-transaction/>
+ <rar-name>hornetq-ra.rar</rar-name>
+ <connection-definition>org.hornetq.ra.HornetQRAConnectionFactory</connection-definition>
+ <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
+ <config-property name="ConnectorClassName" type="java.lang.String">org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</config-property>
+ <config-property name="ConnectionParameters" type="java.lang.String">host=127.0.0.1;port=5446</config-property>
+ <max-pool-size>20</max-pool-size>
+ </tx-connection-factory>
+ </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