Return-Path: X-Original-To: apmail-activemq-commits-archive@www.apache.org Delivered-To: apmail-activemq-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 777D910057 for ; Wed, 19 Nov 2014 15:38:24 +0000 (UTC) Received: (qmail 52892 invoked by uid 500); 19 Nov 2014 15:38:24 -0000 Delivered-To: apmail-activemq-commits-archive@activemq.apache.org Received: (qmail 52742 invoked by uid 500); 19 Nov 2014 15:38:24 -0000 Mailing-List: contact commits-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list commits@activemq.apache.org Received: (qmail 52446 invoked by uid 99); 19 Nov 2014 15:38:24 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 19 Nov 2014 15:38:24 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id C0E859AB5EF; Wed, 19 Nov 2014 15:38:23 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: jbertram@apache.org To: commits@activemq.apache.org Date: Wed, 19 Nov 2014 15:38:28 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [06/15] activemq-6 git commit: Remove references to HornetQ in doc and Comments http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/configuring-transports.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/configuring-transports.xml b/docs/user-manual/zh/configuring-transports.xml index dd22d02..1d28de8 100644 --- a/docs/user-manual/zh/configuring-transports.xml +++ b/docs/user-manual/zh/configuring-transports.xml @@ -18,11 +18,11 @@ 传输层的配置 - HornetQ的传输层是“可插拔的”。通过灵活的配置和一套服务提供接口(SPI),HornetQ可以很容易地更换其传输层。 - 在本章中我们将对HornetQ的传输相关的概念作出解释,并说明它的配置方法。 + ActiveMQ的传输层是“可插拔的”。通过灵活的配置和一套服务提供接口(SPI),ActiveMQ可以很容易地更换其传输层。 + 在本章中我们将对ActiveMQ的传输相关的概念作出解释,并说明它的配置方法。
接收器(Acceptor) - 接收器(acceptor)是 HornetQ 的传输层中最为重要的概念之一。首先 + 接收器(acceptor)是 ActiveMQ 的传输层中最为重要的概念之一。首先 介绍一下在文件activemq-configuration.xml中是怎样定义一个接收器的: <acceptors> @@ -36,12 +36,12 @@ org.apache.activemq.core.remoting.impl.netty.NettyAcceptorFactory 所有接收器都在 acceptors单元(element)内定义。在acceptors 内可以有零个或多个接收器的定义。每个服务器所拥有的接收器的数量是没有限制的。 - 每个接收器都要定义其与HornetQ服务器连接的方式。 + 每个接收器都要定义其与ActiveMQ服务器连接的方式。 以上的例子中我们定义了一个Netty接收器。它在端口5446监听连接请求。 acceptor单元内有一个子单元factory-class。这个单元是用来 定义创建连接器的工厂类。一个连接器工厂类必须要实现AcceptorFactory接口。上例中我们定义 - 的连接器工厂是类NettyAcceptorFactory使用Netty来建立连接。有个这个类定义,HornetQ就知道了用什么传输来建立连接了。 + 的连接器工厂是类NettyAcceptorFactory使用Netty来建立连接。有个这个类定义,ActiveMQ就知道了用什么传输来建立连接了。 acceptor中还可以配置零或多个参数param。在每个param 中定义的是键-值对(key-value)。这些参数用来配置某个传输实现。不同传输有不同的配置参数。 像IP地址、端口号等都是传输配置参数的例子。 @@ -71,9 +71,9 @@ org.apache.activemq.core.remoting.impl.netty.NettyAcceptorFactory connectors下定义连接器。 - 如果你使用JMS服务,需要创建连接工厂的实例并绑定到JNDI。在HornetQ创建 - HornetQConnectionFactory时需要连接器的必要信息,以便这个连接工厂 - 能知道它如何与HornetQ服务器相连接。 + 如果你使用JMS服务,需要创建连接工厂的实例并绑定到JNDI。在ActiveMQ创建 + ActiveMQConnectionFactory时需要连接器的必要信息,以便这个连接工厂 + 能知道它如何与ActiveMQ服务器相连接。 这一信息被定义在配置文件hornetq-jms.xml中的connector-ref单元下。下面这段配置 就是从该配置文件中提取的相关部分,它展示了JMS的连接工厂是如何引用定义在配置文件
配置 Netty 传输层 - HornetQ当前使用ActiveMQ当前使用Netty作为其默认的连接层。Netty是一个高性能的底层网络库. Netty传输的配置有几种不同的方法。它可以使用传统的Java IO(阻塞方式)、NIO(非阻塞)或直接使用 TCP socket及SSL。或者使用HTTP或HTTPS协议。同时还可能使用servlet进行传输。 @@ -202,7 +202,7 @@ etc 默认值是32768字节(32KiB)。 - batch-delay。HornetQ可以通过配置该参数,在数据包写入传输层之前有一个 + batch-delay。ActiveMQ可以通过配置该参数,在数据包写入传输层之前有一个 最大延时(毫秒),达到批量写入的目的。这样可以提高小消息的发送效率。但这样做会增加单个消息的平均发送 延迟。默认值为0毫秒。 @@ -214,7 +214,7 @@ etc 较大的呑吐量的话,将它设为false - nio-remoting-threads。如果使用NIO,默认情况下HornetQ会使用系统中处理 + nio-remoting-threads。如果使用NIO,默认情况下ActiveMQ会使用系统中处理 器内核(或超线程)数量三倍的线程来处理接收的数据包。内核的数量是通过调用Runtime.getRuntime().availableProcessors()来得到的。如果你想改变这个数量, 你可以设定本参数。默认的值是-1,表示线程数为
配置Netty HTTP - Netty HTTP 通过HTTP通道传送数据包。在有些用户环境中防火墙只允许有HTTP通信,这时采用Netty HTTP作为HornetQ + Netty HTTP 通过HTTP通道传送数据包。在有些用户环境中防火墙只允许有HTTP通信,这时采用Netty HTTP作为ActiveMQ 的传输层就能解决问题。 我们提供了一个Netty HTTP的例子来演示其配置和应用。 Netty HTTP具有和Netty TCP同样的配置参数,另外它还有以下参数: @@ -276,14 +276,14 @@ etc
配置Netty Servlet - HornetQ可以使用Netty servlet来传输消息。使用servlet可以将HornetQ的数据通过HTTP传送到一个 - 运行的servlet,再由servlet转发给HornetQ服务器。 - servlet与HTTP的不同之处在于,当用HTTP传输时,HornetQ如同一个web服务器,它监听在某个端口上的HTTP - 请求并返回响应。比如80端口或8080端口。而当使用servlet时,HornetQ的传输数据是通过运行在某一servlet容器 + ActiveMQ可以使用Netty servlet来传输消息。使用servlet可以将ActiveMQ的数据通过HTTP传送到一个 + 运行的servlet,再由servlet转发给ActiveMQ服务器。 + servlet与HTTP的不同之处在于,当用HTTP传输时,ActiveMQ如同一个web服务器,它监听在某个端口上的HTTP + 请求并返回响应。比如80端口或8080端口。而当使用servlet时,ActiveMQ的传输数据是通过运行在某一servlet容器 中的一个特定的servlet来转发的。而这个sevlet容器中同时还可能运行其他的应用,如web服务。当一个公司有多个应用 - 但只允许一个http端口可以访问时,servlet传输可以很好的解决HornetQ的传输问题。 - 请参见HornetQ所提供的servlet例子来了解详细的配置方法。 - 要在HornetQ中使用Netty servlet传输方式,需要以下步骤: + 但只允许一个http端口可以访问时,servlet传输可以很好的解决ActiveMQ的传输问题。 + 请参见ActiveMQ所提供的servlet例子来了解详细的配置方法。 + 要在ActiveMQ中使用Netty servlet传输方式,需要以下步骤: 部署servlet。下面是一个web.xml例子: @@ -292,7 +292,7 @@ etc xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> - <servlet-name>HornetQServlet</servlet-name> + <servlet-name>ActiveMQServlet</servlet-name> <servlet-class>org.jboss.netty.channel.socket.http.HttpTunnelingServlet</servlet-class> <init-param> <param-name>endpoint</param-name> @@ -302,8 +302,8 @@ etc </servlet> <servlet-mapping> - <servlet-name>HornetQServlet</servlet-name> - <url-pattern>/HornetQServlet</url-pattern> + <servlet-name>ActiveMQServlet</servlet-name> + <url-pattern>/ActiveMQServlet</url-pattern> </servlet-mapping> </web-app> @@ -337,7 +337,7 @@ etc <param key="host" value="localhost"/> <param key="port" value="8080"/> <param key="use-servlet" value="true"/> - <param key="servlet-path" value="/messaging/HornetQServlet"/> + <param key="servlet-path" value="/messaging/ActiveMQServlet"/> </connector> </connectors> @@ -357,7 +357,7 @@ etc <param key="host" value="localhost"/> <param key="port" value="8443"/> <param key="use-servlet" value="true"/> - <param key="servlet-path" value="/messaging/HornetQServlet"/> + <param key="servlet-path" value="/messaging/ActiveMQServlet"/> <param key="ssl-enabled" value="true"/> <param key="key-store-path" value="path to a keystoree"/> <param key="key-store-password" value="keystore password"/> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/connection-ttl.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/connection-ttl.xml b/docs/user-manual/zh/connection-ttl.xml index bd79d0c..c2a3066 100644 --- a/docs/user-manual/zh/connection-ttl.xml +++ b/docs/user-manual/zh/connection-ttl.xml @@ -18,7 +18,7 @@ 失效连接的检测 - 本章将讨论连接的生存时间(TTL)以及HornetQ如何处理出现故障的客户端或者异常退出的客户端(即客户端在 + 本章将讨论连接的生存时间(TTL)以及ActiveMQ如何处理出现故障的客户端或者异常退出的客户端(即客户端在 退出时没有合理的关闭相关资源)。
服务器端对失效连接的清除 @@ -31,7 +31,7 @@ ClientSession session = null; try { - sf = HornetQClient.createClientSessionFactory(...); + sf = ActiveMQClient.createClientSessionFactory(...); session = sf.createSession(...); @@ -56,7 +56,7 @@ Connection jmsConnection = null; try { - ConnectionFactory jmsConnectionFactory = HornetQJMSClient.createConnectionFactory(...); + ConnectionFactory jmsConnectionFactory = ActiveMQJMSClient.createConnectionFactory(...); jmsConnection = jmsConnectionFactory.createConnection(); @@ -74,15 +74,15 @@ finally 程序突然中断,相关资源也没有来得及关闭! 如果上述情况发生了,那么这些资源就会留在服务器端而不会被清理。这就会造成资源泄漏现象并最終导致服务器内存 溢出或其它资源的溢出错误。 - 因此在服务器端要有某种机制来避免资源的泄漏。也就是对无效资源进行回收。在判断什么是无效资源时,HornetQ + 因此在服务器端要有某种机制来避免资源的泄漏。也就是对无效资源进行回收。在判断什么是无效资源时,ActiveMQ 考虑到了客户端重新连接的情况。就是当一个连接由于网络临时中断后又恢复正常时,客户端有可能通过不断重试 成功地连接到服务器端。如果服务器端过早清除了相关的连接资源,则客户端就可能重试失败。 - HornetQ的资源回收是完全可配置的。每个 ActiveMQ的资源回收是完全可配置的。每个 ClientSessionFactory 有一个连接 TTL的参数。 这个参数的意义是当客户端的一个连接没有任何数到达服务器时,服务器充许这个连接有效的最长时间。客户端通过定 时向服务器端发送“ping“数据包来维持连接的有效,以免被服务器关掉。如果服务器在TTL指定的时间内没有收到任何 数据包,则认为该连接无效,继而关闭与该连接相关的所有的会话(session)。 - 如果使用JMS,HornetQConnectionFactoryConnectionTTL + 如果使用JMS,ActiveMQConnectionFactoryConnectionTTL 属性是用来定义连接的存活时间的。如果你将JMS连接工厂部署到JNDI中,则应使用配置文件中的connection-ttl参数来定义连接的TTL。 默认的连接TTL值是60000毫秒,即一分钟。 ConnectionTTL @@ -93,7 +93,7 @@ finally
关闭没有被成功关闭的核心会话或JMS连接 如前所述,在使用完毕后在finally中将所有的核心会话或JMS连接关闭是十分重要的。 - 如果你没有这样做,HornetQ会在拉圾回收时进行检测并会在日志中打印类似以下的警告(如果是JMS则在警告中 + 如果你没有这样做,ActiveMQ会在拉圾回收时进行检测并会在日志中打印类似以下的警告(如果是JMS则在警告中 是相应的JMS连接): @@ -107,7 +107,7 @@ at org.apache.activemq.core.client.impl.DelegatingSession.<init>(Delegatin at org.acme.yourproject.YourClass (YourClass.java:666) - HornetQ然后将未关闭的连接/会话关闭。 + ActiveMQ然后将未关闭的连接/会话关闭。 注意在日志的警告中还给出了创建JMS连接/客户端会话的具体行号,以便准确地确定出错的地方。
@@ -119,7 +119,7 @@ at org.acme.yourproject.YourClass (YourClass.java:666) 如果在属性client-failure-check-period所定义的时间内(单位毫秒)客户端没有 收到任何数据,客户端就认为这们连接发生了故障。根据不同的配置,客户端在这种情况下要么进行failover,要么 调用FailureListener的接口(或者是JMS的ExceptionListener)。 - 如果使用JMS,这个参数是HornetQConnectionFactoryClientFailureCheckPeriod。 + 如果使用JMS,这个参数是ActiveMQConnectionFactoryClientFailureCheckPeriod。 如果你向JNDI部署JMS连接工厂,那么相应的参数在hornetq-jms.xml配置文件中,参数名 为client-failure-check-period 这个参数的默认值是30000毫秒,即半分钟。-1表示客户端不检查 http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/core-bridges.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/core-bridges.xml b/docs/user-manual/zh/core-bridges.xml index d72e64b..2b25269 100644 --- a/docs/user-manual/zh/core-bridges.xml +++ b/docs/user-manual/zh/core-bridges.xml @@ -18,17 +18,17 @@ 核心桥 - 桥的功能是从一个源队列中接收消息,再将消息转发到目的地址。通常这个目的地址在另外一个HornetQ服务器中。 + 桥的功能是从一个源队列中接收消息,再将消息转发到目的地址。通常这个目的地址在另外一个ActiveMQ服务器中。 源与目的不需要在同一个集群中。所以桥很适合将消息从一个集群中可靠地转发到另一个集群。比如通过一个WAN,或 internet,等连接不稳定的网络。 桥有处理故障的能力。如果目的服务器的连接失败(像网络故障),桥会重试与目的服务器的连接,直接连接成功 为止。当连接成功后,桥则继续进行工作。 - 总之,桥是可靠连接两个HornetQ服务器的一种手段。使用核心桥时源和目的服务器必须都是HornetQ服务器。 + 总之,桥是可靠连接两个ActiveMQ服务器的一种手段。使用核心桥时源和目的服务器必须都是ActiveMQ服务器。 桥可以通过配置提供一次且只有一次的传递保证。其采用的方法是重复检测(详细 描述在)。 核心桥的功能与JMS桥的功能相似,但是不能将它们混淆! - 核心桥用来连接两个HornetQ节点,它不使用JMS接口。JMS桥使用的是JMS接口,它连接的是任何两个符合 + 核心桥用来连接两个ActiveMQ节点,它不使用JMS接口。JMS桥使用的是JMS接口,它连接的是任何两个符合 JMS 1.1规范的服务器。因此,JMS桥可以将两个不同的JMS服务器连接起来。从性能角度考虑,核心桥由于采用 重复检测来实现一次且只一次的传递保证,可以提供更高的性能。 JMS桥则需要使用XA这种复杂的机制来提供同样的传递保证,因些性能要比核心桥低。 http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/diverts.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/diverts.xml b/docs/user-manual/zh/diverts.xml index 828af0f..2a8e81e 100644 --- a/docs/user-manual/zh/diverts.xml +++ b/docs/user-manual/zh/diverts.xml @@ -20,7 +20,7 @@ 消息的转发(divert)与分流 - 在HornetQ中可以配置一些称为转发器(diverts)的对象。 + 在ActiveMQ中可以配置一些称为转发器(diverts)的对象。 转发器可以将路由到一个地址的消息透明地转发到其它的地址去,不需要客户端的参与。 转发器可以是唯一(exclusive)的,即消息只转发到新的地址,不发到原 来的地址;也可以是不唯一(non-exclusive)的,即消息在发往原有地址的 @@ -61,7 +61,7 @@ 的消息才被转发到新地址,其它消息则继续发往原地址。如果没有定义过滤器,所有消息将被转发。 本例中还配置了一个转换器的类。当每转发一个消息时,该转换器就被执行一次。转换器可以对消息在转发前进行 更改。这里的转换器只是在消息中加入了一个记录转发时间的消息头。 - 本例中消息被转发到一个’存贮与转发是‘队列,然后通过一个桥将消息转发到另一个HornetQ服务器中。 + 本例中消息被转发到一个’存贮与转发是‘队列,然后通过一个桥将消息转发到另一个ActiveMQ服务器中。
不唯一转发器 http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/duplicate-detection.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/duplicate-detection.xml b/docs/user-manual/zh/duplicate-detection.xml index a6c8ea9..10ef543 100644 --- a/docs/user-manual/zh/duplicate-detection.xml +++ b/docs/user-manual/zh/duplicate-detection.xml @@ -20,8 +20,8 @@ 重复消息检测 - HornetQ具有强大的自动检测重复消息的功能。应用层无需实现复杂的重复检测。本章解释了什么是重复检测,它 - 在HornetQ中如何工作的,以及如何进行配置。 + ActiveMQ具有强大的自动检测重复消息的功能。应用层无需实现复杂的重复检测。本章解释了什么是重复检测,它 + 在ActiveMQ中如何工作的,以及如何进行配置。 当客户端向服务器端发送消息时,或者从一个服务器向另一个服务器传递消息时,如果消息发送后目标服务器或者 连接出现故障,导致发送一方没有收到发送成功的确认信息,发送方因此就无法确定消息是否已经成功发送到了目标地 址。 @@ -33,7 +33,7 @@ 个相同的订单,这当然不是所希望的結果。 将消息的发送放到一个事务中也不能解决这个问题。如果在事务提交的过程中发生故障,同样不能确定这个事务是否提交 成功! - 为了解决这个问题,HornetQ提供了自动消息重复检测功能。 + 为了解决这个问题,ActiveMQ提供了自动消息重复检测功能。
在消息发送中应用重复检测 在消息发送中启用重复检测功能十分简单:你只需将消息的一个特殊属性设置一个唯一值。你可以用任意方法来 @@ -113,7 +113,7 @@ message.setStringProperty(HDR_DUPLICATE_DETECTION_ID.toString(), myUniqueID);
分页转存与重复检测 - HornetQ在将消息进行分页转存中也使用了重复检测。当分页转存消息被从磁盘中读回到内存时,如果服务器发生故障, + ActiveMQ在将消息进行分页转存中也使用了重复检测。当分页转存消息被从磁盘中读回到内存时,如果服务器发生故障, 重复检测可以避免在这一过程中有消息被重复读入,即避免了消息的重复传递。 关于分页转存的配置信息请参见
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/embedding-hornetq.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/embedding-hornetq.xml b/docs/user-manual/zh/embedding-hornetq.xml index ec213bc..9fe437f 100644 --- a/docs/user-manual/zh/embedding-hornetq.xml +++ b/docs/user-manual/zh/embedding-hornetq.xml @@ -17,19 +17,19 @@ - 嵌入式HornetQ - HornetQ是由简单传统Java对象(POJO)实现,因此它可以在任何依赖注入的框架中运行,比如JBoss + 嵌入式ActiveMQ + ActiveMQ是由简单传统Java对象(POJO)实现,因此它可以在任何依赖注入的框架中运行,比如JBoss Microcontainer,Sprint或Google Guice。另外如果你的应用程序内部需要消息功能,你可以在程序中 - 直接实例化HornetQ的客户端或服务器端。我们称之为嵌入式 - HornetQ。 - 有些应用需要高性能、事务性及持久化的消息服务,但是又不希望自己去费时费力实现它。于是嵌入式HornetQ就 + 直接实例化ActiveMQ的客户端或服务器端。我们称之为嵌入式 + ActiveMQ。 + 有些应用需要高性能、事务性及持久化的消息服务,但是又不希望自己去费时费力实现它。于是嵌入式ActiveMQ就 成为了一个很适当的选择。 - 要使用嵌入式HornetQ只需要几个简单的步骤。首先初始化配置对象,再初始化服务器并启动它,在你的虚拟机 - 中就运行越来了一个HornetQ服务器。就是这么简单。 + 要使用嵌入式ActiveMQ只需要几个简单的步骤。首先初始化配置对象,再初始化服务器并启动它,在你的虚拟机 + 中就运行越来了一个ActiveMQ服务器。就是这么简单。
POJO的初始化 按照以下步骤去做: - 创建配置对象--这个对象包装了HornetQ的配置信息。如果你想使用配置文件,则使用创建配置对象--这个对象包装了ActiveMQ的配置信息。如果你想使用配置文件,则使用FileConfigurationImpl import org.apache.activemq.core.config.Configuration; import org.apache.activemq.core.config.impl.FileConfiguration; @@ -56,29 +56,29 @@ transports.add(new TransportConfiguration(NettyAcceptorFactory.class.getName())) transports.add(new TransportConfiguration(InVMAcceptorFactory.class.getName())); config.setAcceptorConfigurations(transports); - 接着就需要初始化并启动HornetQ服务。org.apache.activemq.api.core.server.HornetQ类有一些静态方法可用来创建HornetQ服务器。 - import org.apache.activemq.api.core.server.HornetQ; -import org.apache.activemq.core.server.HornetQServer; + 接着就需要初始化并启动ActiveMQ服务。org.apache.activemq.api.core.server.ActiveMQ类有一些静态方法可用来创建ActiveMQ服务器。 + import org.apache.activemq.api.core.server.ActiveMQ; +import org.apache.activemq.core.server.ActiveMQServer; ... -HornetQServer server = HornetQ.newHornetQServer(config); +ActiveMQServer server = ActiveMQ.newActiveMQServer(config); server.start(); - 你还可以直接实例化HornetQServerImpl - HornetQServer server = - new HornetQServerImpl(config); + 你还可以直接实例化ActiveMQServerImpl + ActiveMQServer server = + new ActiveMQServerImpl(config); server.start();
使用依赖注入框架 - 你还可以使用一个依赖注入框架来启动HornetQ,比如JBoss + 你还可以使用一个依赖注入框架来启动ActiveMQ,比如JBoss MicrocontainerSpring框架 - HornetQ独立服务器使用的是JBoss Microcontainer作为其框架。在HornetQ的发布中包括的HornetQBootstrapServerhornetq-beans.xml文件共同实现了 - 在JBoss Microcontainer中对HornetQ服务器的引导。 - 要使用JBoss Microcontainer,需要在xml文件中声明HornetQServer + ActiveMQ独立服务器使用的是JBoss Microcontainer作为其框架。在ActiveMQ的发布中包括的ActiveMQBootstrapServerhornetq-beans.xml文件共同实现了 + 在JBoss Microcontainer中对ActiveMQ服务器的引导。 + 要使用JBoss Microcontainer,需要在xml文件中声明ActiveMQServerConfiguration对象。另外还可以注入一个安全管理器和一个MBean服务器。但是这些 注入是可选的。 下面是一个基本的JBoss Microcontainer的XML Bean的声明: @@ -92,8 +92,8 @@ server.start(); </bean> <!-- The core server --> - <bean name="HornetQServer" - class="org.apache.activemq.core.server.impl.HornetQServerImpl"> + <bean name="ActiveMQServer" + class="org.apache.activemq.core.server.impl.ActiveMQServerImpl"> <constructor> <parameter> <inject bean="Configuration"/> @@ -101,18 +101,18 @@ server.start(); </constructor> </bean> </deployment> - HornetQBootstrapServer实现了JBoss Microcontainer的简单封装。 - HornetQBootstrapServer bootStrap = - new HornetQBootstrapServer(new String[] {"hornetq-beans.xml"}); + ActiveMQBootstrapServer实现了JBoss Microcontainer的简单封装。 + ActiveMQBootstrapServer bootStrap = + new ActiveMQBootstrapServer(new String[] {"hornetq-beans.xml"}); bootStrap.run();
- 连接嵌入式HornetQ - 嵌入式HornetQ的连接和普通的连接一样要创建连接工厂: + 连接嵌入式ActiveMQ + 嵌入式ActiveMQ的连接和普通的连接一样要创建连接工厂:
核心接口 使用核心接口,需要创建一个ClientSessionFactory然后正常建立连接。 - ClientSessionFactory nettyFactory = HornetQClient.createClientSessionFactory( + ClientSessionFactory nettyFactory = ActiveMQClient.createClientSessionFactory( new TransportConfiguration( InVMConnectorFactory.class.getName())); @@ -140,10 +140,10 @@ session.close();
JMS接口 - 使用JMS接口连接嵌入HornetQ同样简单。只需要直接实例化 + 使用JMS接口连接嵌入ActiveMQ同样简单。只需要直接实例化 ConnectionFactory即可。如下面例子所示: ConnectionFactory cf = - HornetQJMSClient.createConnectionFactory( + ActiveMQJMSClient.createConnectionFactory( new TransportConfiguration(InVMConnectorFactory.class.getName())); Connection conn = cf.createConnection(); @@ -172,7 +172,7 @@ conn.close();
- JMS嵌入式HornetQ的例子 - 有关如何设置与运行JMS嵌入式HornetQ的例子请参见 + JMS嵌入式ActiveMQ的例子 + 有关如何设置与运行JMS嵌入式ActiveMQ的例子请参见
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/examples.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/examples.xml b/docs/user-manual/zh/examples.xml index 430dc64..875b296 100644 --- a/docs/user-manual/zh/examples.xml +++ b/docs/user-manual/zh/examples.xml @@ -18,11 +18,11 @@ 例子 - 在HornetQ的发布包中有超过70个不同的例子。这些例子直接可以运行。它们分别展示了HornetQ所具有的各种功能。 - 所有的例子都在HornetQ发布包的 examples目录下。所有的例子被分成了两大类: + 在ActiveMQ的发布包中有超过70个不同的例子。这些例子直接可以运行。它们分别展示了ActiveMQ所具有的各种功能。 + 所有的例子都在ActiveMQ发布包的 examples目录下。所有的例子被分成了两大类: JMS例子和内核例子。JMS例子展现的是JMS的各种功能,内核的例子则展示的是内核API的功能。 - 此外HornetQ还提供了一些Java EE的例子,这些例子需要JBoss应用服务器才能运行。 + 此外ActiveMQ还提供了一些Java EE的例子,这些例子需要JBoss应用服务器才能运行。
JMS 例子 要运行一个JMS例子,只要进入到相应例子的子目录,运行 ./build.sh (或者 @@ -30,10 +30,10 @@ 下面列出的这些JMS例子并配有简要的说明。
应用层的失效备援(Failover) - HornetQ支持应用层的失效备援。这在服务器端没有复制(replication)配置的情况下是很有用的。 - 应用程序可以注册一个JMS ExceptionListener。当HornetQ检测到连接故障时,它会 + ActiveMQ支持应用层的失效备援。这在服务器端没有复制(replication)配置的情况下是很有用的。 + 应用程序可以注册一个JMS ExceptionListener。当ActiveMQ检测到连接故障时,它会 通知这个注册的Listener。 - 这个ExceptionListener在接到HornetQ的通知后可以与其它的节点创建 + 这个ExceptionListener在接到ActiveMQ的通知后可以与其它的节点创建 新的连接、会话等对象,以使应用程序能继续运行。 应用层的失效备援是实现高可获得性(HA)的一种方法。它与自动失效备援不同之处在于它需要编写额外的代码。 同时由于发生故障时旧的会话结束,这会造成那些还没来得及提交的工作丢失,还会造成任何没有通知的消息被重发。 @@ -42,12 +42,12 @@ 内核桥(Bridge)例子 bridge例子展示的是将一个内核桥部署到一个服务器上,从本地的queue接收消息并将其转发到 另一服务器的地址上。 - 内核的bridge可用来在两个互相分开的HornetQ的服务器间建立一个消息流。它可以处理临时性的连接故障,特别适用于 + 内核的bridge可用来在两个互相分开的ActiveMQ的服务器间建立一个消息流。它可以处理临时性的连接故障,特别适用于 不可靠的网络的情况。广域网就是一个例子。
浏览器(Browser) - browser例子展示的是在HornetQ中如何使用JMS browser例子展示的是在ActiveMQ中如何使用JMS QueueBrowser 有关JMS queue的概念在JMS 1.1 specification有明确的定义,这里就不再叙述。 一个QueueBrowser可以用来观察queue中的消息而影响它们。它可以观察queue中的全部 @@ -60,7 +60,7 @@
客户端的负载均衡 client-side-load-balancing例子展示的是通过一个JMS连接可以在集群的不同节点上创建 - 会话。也就是说HornetQ可以对客户端的会话创建进行集群内的负载均衡。 + 会话。也就是说ActiveMQ可以对客户端的会话创建进行集群内的负载均衡。
集群分组 @@ -87,8 +87,8 @@
限制接收速率 - HornetQ可以控制一个JMS消息接收者接收消息的速度。这是在创建或部署连接工厂时通过其配置参数来完成的。 - 如果设置了这个速度的限制,HornetQ会保证其向接收者传递消息的速度永远不会超过这个限制。 + ActiveMQ可以控制一个JMS消息接收者接收消息的速度。这是在创建或部署连接工厂时通过其配置参数来完成的。 + 如果设置了这个速度的限制,ActiveMQ会保证其向接收者传递消息的速度永远不会超过这个限制。
死消息(Dead Letter) @@ -102,57 +102,57 @@
延迟再发送 - delayed-redelivery是一个展示如何配置HornetQ延迟再发送消息的例子。 + delayed-redelivery是一个展示如何配置ActiveMQ延迟再发送消息的例子。 当客户端经常发生故障或发生事务回滚时,消息会不停地重复发送,这样会造成CPU和网络资源被不间断的 重复发送所占用,影响其它工作的进行。延迟再发送可以有效地减轻这种情况。
转移(Divert) - HornetQ通过配置可以将消息从一个地址自动地转移到另一地址。这个例子就是向用户展示转移的配置和使用。 + ActiveMQ通过配置可以将消息从一个地址自动地转移到另一地址。这个例子就是向用户展示转移的配置和使用。
持久订阅(Durable Subscription) - durable-subscription是一个在HornetQ中如何使用持久订阅(durable + durable-subscription是一个在ActiveMQ中如何使用持久订阅(durable subscription)的例子。持久订阅是标准JMS的一部分,在JMS 1.1规范中有它的详细定义。 对于一个持久订阅来说,它的消息可以在订阅没有处于接收状态时被保留。另外,如果发到它的消息是持久 消息的话,这些消息可以在服务器故障或重启时不丢失。
嵌入方式(Embedded) - embedded是一个如何将HornetQ服务嵌入到你的应用中的例子。 + embedded是一个如何将ActiveMQ服务嵌入到你的应用中的例子。
HTTP 传输协议的支持 - http-transport展示了HornetQ如何支持在传输层使用HTTP协议来发送和接收消息。 + http-transport展示了ActiveMQ如何支持在传输层使用HTTP协议来发送和接收消息。
直接实例化JMS对象 JMS 对象是指 连接工厂(ConnectionFactory)队列(Queue)话题(Topic) 的实例。通常情况下它们通过JNDI服务 来获取。它们在JMS术语中被称为“被管理的对象(administered objects)”。 - 有的时候客户端没有JNDI服务可用,或者不适合使用JNDI。那么在没有JNDI的情况下HornetQ允许直接在客户端 + 有的时候客户端没有JNDI服务可用,或者不适合使用JNDI。那么在没有JNDI的情况下ActiveMQ允许直接在客户端 将这些JMS对象实例化。
拦截器(Interceptor) - HornetQ可以配置拦截器以便用户可以自己处理各种各样的消息事件。这个例子就是给用户展示如何使用 + ActiveMQ可以配置拦截器以便用户可以自己处理各种各样的消息事件。这个例子就是给用户展示如何使用 拦截器。
JAAS - jaas是一个如何配置JAAS安全模式的例子。HornetQ可以使用JAAS来进行用户的验证与权限控制。 + jaas是一个如何配置JAAS安全模式的例子。ActiveMQ可以使用JAAS来进行用户的验证与权限控制。
JMS桥(Bridge) - jms-brige是一个在两个单独HornetQ服务器之间设置桥的例子。 + jms-brige是一个在两个单独ActiveMQ服务器之间设置桥的例子。
JMX管理 - jmx例子展示了如何使用JMX来管理HornetQ。 + jmx例子展示了如何使用JMX来管理ActiveMQ。
大消息 - large-message例子给用户展示了使用HornetQ来发送和接收大消息的功能。HornetQ + large-message例子给用户展示了使用ActiveMQ来发送和接收大消息的功能。ActiveMQ 支持超大消息的发送与接收。这些消息可以大到内存无法装下。它的大小只受服务器的硬盘空间的限制。 在服务器端大消息是被持久化的,所以它可以承受服务器的崩溃或重启而不丢失或损坏。
@@ -166,20 +166,20 @@
分布式队列的负载均衡 - clustered-queue例子中配置了一个2节点的HornetQ服务集群。在集群上部署了 + clustered-queue例子中配置了一个2节点的ActiveMQ服务集群。在集群上部署了 一个分布式JMS队列。 然后在一个节点上创建了一个发送者(producer),在两个节点上分别创建一个接收者(consumer)。通过 发送者向队列发送一些消息然后被两的接收者以轮流(round-robin)的方式接收。 - 本例说明了HornetQ可以将消息向集群中的每个接收者分布式地传递消息。 + 本例说明了ActiveMQ可以将消息向集群中的每个接收者分布式地传递消息。
管理 - management例子展示的是如何使用JMS消息来实现对HornetQ的管理。 + management例子展示的是如何使用JMS消息来实现对ActiveMQ的管理。
管理通知 - management-notification展示了HornetQ如何以JMS消息的形式向用户发送 - 管理通知。当某些事件发生时(如接收都创建,关闭;地址创建与删除;安全验证失败等等),HornetQ会向客户 + management-notification展示了ActiveMQ如何以JMS消息的形式向用户发送 + 管理通知。当某些事件发生时(如接收都创建,关闭;地址创建与删除;安全验证失败等等),ActiveMQ会向客户 发出JMS消息以通知客户这些事件的相关信息。客户接收到这些信息后可以作出相应的处理。
@@ -190,12 +190,12 @@ 消息失效 expiry例子中包括了如何定义和使用消息失效期。消息如果在消息服务器中存留超过一定 的时间,就可以被删除。根据JMS规范,接收者就不应该接收到已经过了失效期的消息。(但是并不保证一定接收不到)。 - HornetQ可以给一个队列配上一个失效地址,当队列中的消息失效时,它们就会从队列中删除并转移到该失效地址。 + ActiveMQ可以给一个队列配上一个失效地址,当队列中的消息失效时,它们就会从队列中删除并转移到该失效地址。 这些“失效"的消息可以从失效地址中接收并进行分析。
消息组 - message-group展示的是如何在HornetQ中配置消息组。消息组可以让你的消息 + message-group展示的是如何在ActiveMQ中配置消息组。消息组可以让你的消息 只被一个接收者接收。属于一个消息组中的消息有如下特性: @@ -223,10 +223,10 @@
零接收缓冲 - 默认时HornetQ的接收者客户端有一个消息缓冲,它用来保存从服务器上预先接收的消息。这样做是为了提高 - 性能。因为如果没有这个缓冲,每次调用receive()或onMessage()后,HornetQ就会访问一次服务器请求下 + 默认时ActiveMQ的接收者客户端有一个消息缓冲,它用来保存从服务器上预先接收的消息。这样做是为了提高 + 性能。因为如果没有这个缓冲,每次调用receive()或onMessage()后,ActiveMQ就会访问一次服务器请求下 一个消息。 - 这样每接收一个消息就会增加一次网络往返的传输。因此,HornetQ在默认情况下使用客户端的接收缓冲来 + 这样每接收一个消息就会增加一次网络往返的传输。因此,ActiveMQ在默认情况下使用客户端的接收缓冲来 预先接收消息,以提高效率。 然而在某些情况下这样的缓冲不符合应用需要。那么可以将缓冲关闭。本例就是展示如何关闭接收缓冲。
@@ -234,13 +234,13 @@ 带有服务器数据复制的非事务失效备援 non-transaction-failover例子展示了由两个服务器组成的高可获得性主/从关系。 客户端使用一个非交易的JMS会话(session)可以在主节点崩溃的情况下从主节点失效备援到备份节点。 - HornetQ的这一功能是通过主、备节点间的状态复制来实现的。当主节点发生故障崩溃时,客户端的连接可以自动 + ActiveMQ的这一功能是通过主、备节点间的状态复制来实现的。当主节点发生故障崩溃时,客户端的连接可以自动 转向备份节点以继续的发送或接收消息。当使用非事务性的会话时,有可能发生消息丢失或重复传递的情况。
分页(paging) - paging例子展示了HornetQ在内存有限时如何支持超大容量的队列。当内存不够时, - HornetQ会将消息保存到磁盘上;需要时再将它们从磁盘读入内存。这一过程对用户是透明的。 + paging例子展示了ActiveMQ在内存有限时如何支持超大容量的队列。当内存不够时, + ActiveMQ会将消息保存到磁盘上;需要时再将它们从磁盘读入内存。这一过程对用户是透明的。
预先通知 @@ -248,11 +248,11 @@ AUTO_ACKNOWLEDGE(自动通知)、CLIENT_ACKNOWLEDGE客户通知以及 DUPS_OK_ACKNOWLEDGE可重复通知。请参阅JMS规范和教程来进一步了解这几种通知方式。 所有方式都需要从客户端发通知到服务器端。有时当发生故障时你并不在乎丢失一些消息,这样可以采用在服务器端在消息 - 传递前进行通知就显得比较合理。本例就是展示如何使用这一HornetQ独有的通知方式。 + 传递前进行通知就显得比较合理。本例就是展示如何使用这一ActiveMQ独有的通知方式。
消息发送速度限制 - producer-rte-limit例子展示了如何设置HornetQ的最大消息发送速率。它控制消息的 + producer-rte-limit例子展示了如何设置ActiveMQ的最大消息发送速率。它控制消息的 发送者(JMS producer)发送消息的最大速度。
@@ -283,16 +283,16 @@
定时消息 - scheduled-message例子展示了如何向HornetQ发送定时消息(scheduled message)。 + scheduled-message例子展示了如何向ActiveMQ发送定时消息(scheduled message)。 所谓定时消息就是在规定的将来的某一时间传递的消息。
安全 - security例子展示了如何配置HornetQ的安全参数。 + security例子展示了如何配置ActiveMQ的安全参数。
发送通知 - send-acknowledgements例子展示了如何使用HornetQ提供的高级异步发送通知功能 + send-acknowledgements例子展示了如何使用ActiveMQ提供的高级异步发送通知功能 (asynchronous send acknowledgements)。这是服务器向客户端通知消息已经 被接收。
@@ -302,25 +302,25 @@
静态消息选择器 - static-selector例子展示了如何配置HornetQ核心队列的静态消息选择器(又称过滤器)。 + static-selector例子展示了如何配置ActiveMQ核心队列的静态消息选择器(又称过滤器)。
使用JMS方法来配置静态消息选择器 - static-selector-jms例子采用JMS方法来配置HornetQ的队列的静态选择器(过滤器)。 + static-selector-jms例子采用JMS方法来配置ActiveMQ的队列的静态选择器(过滤器)。
Stomp - stomp例子展示了如何配置HornetQ来发送与接收Stomp消息。 + stomp例子展示了如何配置ActiveMQ来发送与接收Stomp消息。
Stomp与Web Sockets - stomp-websockets例子给出了如何配置一个HornetQ服务器直接从Web浏览器 + stomp-websockets例子给出了如何配置一个ActiveMQ服务器直接从Web浏览器 中(需要支持Web Socket)发送和接收Stomp消息。
对称型集群 - symmetric-cluster例子展示如何设置一个HornetQ的对称型集群。 - HornetQ的集群配置是非常灵活的。你可以根据需要设置不同的集群结构。最常用的就是对称型的集群了。这是在应用 + symmetric-cluster例子展示如何设置一个ActiveMQ的对称型集群。 + ActiveMQ的集群配置是非常灵活的。你可以根据需要设置不同的集群结构。最常用的就是对称型的集群了。这是在应用 服务器中常见的集群类型。 对称型的集群具有同一性,即每个节点与其他节点处于同等地位,并且每一个节点都与其他任一节点相连接。
@@ -334,7 +334,7 @@
话题体系(Topic Hierarchy) - HornetQ支持话题体系。所谓话题体系就是允许你使用通配符来注册一个订阅(subscriber),这样所有发送到 + ActiveMQ支持话题体系。所谓话题体系就是允许你使用通配符来注册一个订阅(subscriber),这样所有发送到 与该通配符相匹配的地址的消息都可以被该订阅收到。
@@ -349,29 +349,29 @@ 带有数据复制的事务性失效备援 transaction-failover例子展示了由两个服务器组成的高可获得性主/备关系。 客户端使用一个交易的JMS会话(session)可以在主节点崩溃的情况下从主节点失效备援到备份节点。 - HornetQ的这一功能是通过主、备节点间的状态复制来实现的。当主节点发生故障崩溃时,客户端的连接可以自动 + ActiveMQ的这一功能是通过主、备节点间的状态复制来实现的。当主节点发生故障崩溃时,客户端的连接可以自动 转向备份节点以继续的发送或接收消息。当使用事务性的会话时,能够保证消息被传递并且只被传递一次。
事务性会话 - transactional例子展示了如何在HornetQ中使用事务性会话。 + transactional例子展示了如何在ActiveMQ中使用事务性会话。
XA Heuristic - xa-heuristic例子给出了如何通过HornetQ的管理接口来做出一个XA的heuristic决定。 + xa-heuristic例子给出了如何通过ActiveMQ的管理接口来做出一个XA的heuristic决定。 一个XA的heuristic决定是一个单方面的对一个已经准备的(prepared)XA事务分支提交或回滚的决定。
XA 接收 - xa-receive例子展示的是如何使用HornetQ在一个XA事务内接收消息。 + xa-receive例子展示的是如何使用ActiveMQ在一个XA事务内接收消息。
XA 发送 - xa-send例子展示的是如何使用HornetQ在一个XA事务内发送消息。 + xa-send例子展示的是如何使用ActiveMQ在一个XA事务内发送消息。
XA与事务管理器(transaction manager) - xa-with-jta展示了如何在HornetQ中使用JTA接口来控制事务。 + xa-with-jta展示了如何在ActiveMQ中使用JTA接口来控制事务。
@@ -379,7 +379,7 @@ 运行核心API的例子很简单,只要进到相应的例子目录下运行“ant"即可。
嵌入式 - 本例展示了如何将HornetQ服务器嵌入到你的代码中。 + 本例展示了如何将ActiveMQ服务器嵌入到你的代码中。
@@ -397,15 +397,15 @@
资源适配器的配置(JCA) - 本例展示了如何配置HornetQ的JCA适配器的各种参数。 + 本例展示了如何配置ActiveMQ的JCA适配器的各种参数。
资源适配器运程服务器的配置 - 本例展示了如何配置HornetQ的JCA适配器来与远程的HornetQ服务器通迅。 + 本例展示了如何配置ActiveMQ的JCA适配器来与远程的ActiveMQ服务器通迅。
JMS 桥(Bridge) - 本例展示了如何使用HornetQ的JMS bridge。 + 本例展示了如何使用ActiveMQ的JMS bridge。
MDB (消息驱动Bean) @@ -413,15 +413,15 @@
Servlet传输 - 一个展示在HornetQ中使用servlet作为传输层的例子。 + 一个展示在ActiveMQ中使用servlet作为传输层的例子。
Servlet SSL 传输 - 一个展示在HornetQ中使用基于SSL之上的servlet传输的例子。 + 一个展示在ActiveMQ中使用基于SSL之上的servlet传输的例子。
XA 恢复(recovery) - 这是一个展示HornetQ在JBoss应用服务器中的XA recovery是如何工作的例子。 + 这是一个展示ActiveMQ在JBoss应用服务器中的XA recovery是如何工作的例子。
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/filter-expressions.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/filter-expressions.xml b/docs/user-manual/zh/filter-expressions.xml index ff1dbd8..1b5db78 100644 --- a/docs/user-manual/zh/filter-expressions.xml +++ b/docs/user-manual/zh/filter-expressions.xml @@ -20,12 +20,12 @@ 过滤器表达式 - HornetQ提供了一套强大的过滤器(filter)语言。它的语法是基于SQL 92表达式的部分语法。 + ActiveMQ提供了一套强大的过滤器(filter)语言。它的语法是基于SQL 92表达式的部分语法。 实际上它与JMS选择器(selector)的语法是相同的。只是其中有一些预定义的标识符有所不同。有关 JMS选择器的相关知识参见 javax.jms.Message - HornetQ在以下以个地方使用了过滤器表达式: + ActiveMQ在以下以个地方使用了过滤器表达式: 预定义的队列。当在中有所描述。 - HornetQ的内核过滤器表达式与JMS选择器表达式是有所不同的。JMS选择器应用于JMS消息,而HornetQ的内核过滤 + ActiveMQ的内核过滤器表达式与JMS选择器表达式是有所不同的。JMS选择器应用于JMS消息,而ActiveMQ的内核过滤 器表达式则用于内核消息。 以下标识符可以用在内核消息的过滤器表达式中,用来引用内核消息的属性: http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/flow-control.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/flow-control.xml b/docs/user-manual/zh/flow-control.xml index c1e041e..db69d93 100644 --- a/docs/user-manual/zh/flow-control.xml +++ b/docs/user-manual/zh/flow-control.xml @@ -26,10 +26,10 @@ 客户端不断积累,最終引起内存溢出的错误。
基于窗口的流控制 - 默认情况下HornetQ的接收者一端会将消息进行缓存以提高性能。如果不这样做,那每次接收者收到一个消息, + 默认情况下ActiveMQ的接收者一端会将消息进行缓存以提高性能。如果不这样做,那每次接收者收到一个消息, 都得通知服务器传递下一个消息,然后服务器再将下一个消息传递过来。这就增加了通信的次数。 对于每一次消息传递都有一个网络的往返通信,这样降低了性能。 - 为了避免这样,HornetQ将每个接收者的消息提前接收到一处缓存中。每个缓存的最大值由 + 为了避免这样,ActiveMQ将每个接收者的消息提前接收到一处缓存中。每个缓存的最大值由 consumer-window-size参数决定(单位字节)。 consumer-window-size的默认值是 1 MiB (1024 * 1024 字节)。 @@ -97,9 +97,9 @@ <consumer-window-size>0</consumer-window-size> </connection-factory> - 如果直接实例化连接工厂,则使用HornetQConnectionFactory.setConsumerWindowSize() + 如果直接实例化连接工厂,则使用ActiveMQConnectionFactory.setConsumerWindowSize() 方法来设定窗口大小。 - 参见例子来了解如何配置HornetQ来 + 参见例子来了解如何配置ActiveMQ来 关闭接收者的缓存。
@@ -112,7 +112,7 @@ 参见有关速率流控制的例子以进一步了解它的工作原理。
使用核心接口(Core API) - HornetQ的核心接口的ActiveMQ的核心接口的ClientSessionFactory.setConsumerMaxRate(int consumerMaxRate)方法或 某些ClientSession.createConsumer()方法可以实现对流的速率控制。
@@ -131,7 +131,7 @@ of 10 messages per sec --> <consumer-max-rate>10</consumer-max-rate> </connection-factory> - 如果是直接实例化连接工厂,则通过HornetQConnectionFactory.setConsumerMaxRate(int + 如果是直接实例化连接工厂,则通过ActiveMQConnectionFactory.setConsumerMaxRate(int consumerMaxRate)方法来设定最大流速率。 速率流控制可以与窗口流控制结合使用。速率控制只规定了客户端每秒接收多少消息。因此如果你设定 @@ -143,7 +143,7 @@
发送者(producer)的流控制 - HornetQ还可以控制客户端向服务器发送消息的速度,以避免服务器因大量数据过载。 + ActiveMQ还可以控制客户端向服务器发送消息的速度,以避免服务器因大量数据过载。
基于窗口的流控制 与接收者的相应的控制相似。在默认条件下,发送者要有足够的份额(credits)才可以向服务器的地址发送消息。 @@ -172,12 +172,12 @@ </entries> <producer-window-size>10</producer-window-size> </connection-factory> - 如果是直接实例化连接工厂,则使用HornetQConnectionFactory.setProducerWindowSize(int + 如果是直接实例化连接工厂,则使用ActiveMQConnectionFactory.setProducerWindowSize(int producerWindowSize)方法来设定窗口大小。
限定发送者窗口流控制 - 通常情况下客户端请求多少份额,HornetQ服务器就给予多少份额。然而我们还可以针对每个地址来设定一个最大 + 通常情况下客户端请求多少份额,ActiveMQ服务器就给予多少份额。然而我们还可以针对每个地址来设定一个最大 的份额值,以使服务器给出的份额都不大于该值。这样可以防止一个地址的内存溢出。 例如,如果有一个队列称为“myqueue”。将它的最大内存值设为10MiB,则服务器就会控制给出的份额以保证向该队列的地 址发送消息时不会占大于10MiB的内存空间。 @@ -211,7 +211,7 @@
速率流控制 - HornetQ也可以控制发送者发送消息的速率。单位是每秒消息数。通过设定速率可保证发送者的发送速率不超过某个值。 + ActiveMQ也可以控制发送者发送消息的速率。单位是每秒消息数。通过设定速率可保证发送者的发送速率不超过某个值。 速率必须是一个正整数。如果设为 -1 则关闭速率流控制。默认值是-1 请参见例子进一步了解速率流控制的使用方法。
@@ -235,7 +235,7 @@ of 10 messages per sec --> <producer-max-rate>10</producer-max-rate> </connection-factory> - 如果直接实例化连接工厂,则使用HornetQConnectionFactory.setProducerMaxRate(int + 如果直接实例化连接工厂,则使用ActiveMQConnectionFactory.setProducerMaxRate(int consumerMaxRate)方法来设置。
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/4a6b980f/docs/user-manual/zh/ha.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/ha.xml b/docs/user-manual/zh/ha.xml index 5861c55..298bcd9 100644 --- a/docs/user-manual/zh/ha.xml +++ b/docs/user-manual/zh/ha.xml @@ -23,25 +23,25 @@ 当客户端当前连接的服务器发故障时,客户端可以将连接转到另一台正常的服务器,从而能够继续工作
主要-备份对 - HornetQ可以将两个服务器以主要-备份对的形式连接在一起。目前HornetQ允许一个 + ActiveMQ可以将两个服务器以主要-备份对的形式连接在一起。目前ActiveMQ允许一个 主要服务器有一个备份服务器,一个备份服务器只有一个主要服务器。在正常情况下主要服务器工作,备份服务器只有当 发生失效备援发生时工作。 没有发生失效备援时,主要服务器为客户端提供服务,备份服务器处于待机状态。当客户端在失效备援后连接到备份服务 器时,备份服务器开始激活并开始工作。
高可获得性(HA)的模式 - HornetQ的高可获得性有两种模式:一种模式通过由主服务器日志向备份服务器日志 + ActiveMQ的高可获得性有两种模式:一种模式通过由主服务器日志向备份服务器日志 复制数据。另一种模式则是主服务器与备份服务器间存贮共享 只有持久消息才可以在失效备援时不丢失。所有非持久消息则会丢失。
数据复制 - 在这种模式下,保存在HornetQ主服务器中日志中的数据被复制到备份服务器日志中。注意我们并不复制 + 在这种模式下,保存在ActiveMQ主服务器中日志中的数据被复制到备份服务器日志中。注意我们并不复制 服务器的全部状态,而是只复制日志和其它的持久性质的操作。 复制的操作是异步进行的。数据通过流的方式复制,复制的結果则通过另一个流来返回。通过这样的异步方式 我们可以获得比同步方式更大的呑吐量。 - 当用户得到确认信息如一个事务已经提交、准备或加滚,或者是一个持久消息被发送时,HornetQ确保这些状态 + 当用户得到确认信息如一个事务已经提交、准备或加滚,或者是一个持久消息被发送时,ActiveMQ确保这些状态 已经复制到备份服务器上并被持久化。 数据复制这种方式不可避免地影响性能,但是另一方面它不依赖于昂贵的文件共享设备(如SAN)。它实际上是 一种无共享的HA方式。 @@ -93,7 +93,7 @@ 当失效备援发生后,备份服务器代替主服务器工作,原来的主服务器失效。这时简单的重启主服务 器是不行的。要想将主服务器与备份重新进行同步,就必须先将主服务器和备份服务器同时停止,再将 主服务器的数据拷贝到备份服务器,然后再启动。 - HornetQ以后将支持备份与主服务器间的自动同步,无需停止主服务器。 + ActiveMQ以后将支持备份与主服务器间的自动同步,无需停止主服务器。
@@ -133,14 +133,14 @@ 由于主备服务器之间共享存贮,所以它们不需要进行同步。但是它需要主备服务器同时工作以提供 高可获得性。如果一量发生失效备援后,就需要在尽可能早的时间内将备份服务器(处于工作状态)停下来, 然后再启动主服务器和备份服务器。 - HornetQ以后将支持自动同步功能,不需要先停止服务器。 + ActiveMQ以后将支持自动同步功能,不需要先停止服务器。
失效备援的模式 - HornetQ定义了两种客户端的失效备援: + ActiveMQ定义了两种客户端的失效备援: 自动客户端失效备援 @@ -149,26 +149,26 @@ 应用层的客户端失效备援 - HornetQ还支持100%透明的同一个服务器的自动连接恢复(适用于网络的临时性故障)。这与失效备援很相似, + ActiveMQ还支持100%透明的同一个服务器的自动连接恢复(适用于网络的临时性故障)。这与失效备援很相似, 只不过连接的是同一个服务器,参见 在发生失效备援时,如果客户端有非持久或临时队列的接收者时,这些队列会自动在备份服务器上重新创建。对于 非持久性的队列,备份服务器事先是没有它们的信息的。
自动客户端失效备援 - HornetQ的客户端可以配置主/备份服务器的信息,当客户端与主服务器的连接发生故障时,可以自动检测到故障并 + ActiveMQ的客户端可以配置主/备份服务器的信息,当客户端与主服务器的连接发生故障时,可以自动检测到故障并 进行失效备援处理,让客户端连接到备份服务器上。备份服务器可以自动重新创建所有在失效备援之前存在的会话与接收 者。客户端不需要进行人工的连接恢复工作,从而节省了客户端的开发工作。 - HornetQ的客户端在参数client-failure-check-period(在 + ActiveMQ的客户端在参数client-failure-check-period(在 中进行了解释)规定的时间内如果没有收到数据包,则认为连接发生故障。 当客户端认为连接故障时,它就会尝试进行失效备援。 - HornetQ有几种方法来为客户端配置主/备服务器对的列表。可以采用显式指定的方法,或者采用更为常用的 + ActiveMQ有几种方法来为客户端配置主/备服务器对的列表。可以采用显式指定的方法,或者采用更为常用的 服务器发现的方法。有关如何配置服务器发现的详细信息,请参见 。 关于如何显式指定主/备服务器对的方法,请参见中的解释。 要使客户端具备自动失效备援,在客户端的配置中必须要指定重试的次数要大于零(参见 中的解释)。 有时你需要在主服务器正常关机的情况下仍然进行失效备援。如果使用JMS,你需要将HornetQConnectionFactoryActiveMQConnectionFactoryFailoverOnServerShutdown属性设为true,或者是在hornetq-jms.xml(参数为failover-on-server-shutdown)文件中进行相应的配置。如果使用的是核心接口,可以在创建 ClientSessionFactoryImpl实例时将上述同名属性设置为true。 @@ -176,7 +176,7 @@ 默认正常关机不会不会导致失效备援。 - 使用CTRL-C来关闭HornetQ服务器或JBoss应用服务器属于正常关机,所以不会触发客户端的失效 + 使用CTRL-C来关闭ActiveMQ服务器或JBoss应用服务器属于正常关机,所以不会触发客户端的失效 备援。 要想在这种情况下进行失效备援必须将属性FailoverOnServerShutdown 设为true。 @@ -187,7 +187,7 @@ 如果重试次数超过的该参数的值,则连接失败。 在有些情况下,你可能希望在初始连接失败和情况下自动连接到备份服务器,那么你可以直接在 ClientSessionFactoryImplHornetQConnectionFactory上设置FailoverOnInitialConnection + >ActiveMQConnectionFactory上设置FailoverOnInitialConnection 参数,或者在配置文件中设置failover-on-initial-connection。默认的值是false 有关事务性及非事务性JMS会话的自动失效备援的例子,请参见 @@ -195,7 +195,7 @@ linkend="examples.non-transaction-failover"/>。
关于服务器的复制 - HornetQ在主服务器向备份服务器复制时,并不复制服务器的全部状态。所以当一个会话在备份服务器 + ActiveMQ在主服务器向备份服务器复制时,并不复制服务器的全部状态。所以当一个会话在备份服务器 中重新创建后,它并不知道发送过的消息或通知过的消息。在失效备援的过程中发生的消息发送或通知也可 能丢失。 理论上如果进行全部状态的复制,我们可以提供100%的透明的失效备援,不会失去任何的消息或通知。 @@ -216,12 +216,12 @@ 失效备援时阻塞调用的处理 如果当发生失效备援时客户端正面进行一个阻塞调用并等待服务器的返回,新创建的会话不会知道这个调用, 因此客户端可能永远也不会得到响应,也就可能一直阻塞在那里。 - 为了防止这种情况的发生,HornetQ在失效备援时会解除所有的阻塞调用,同时抛出一个 + 为了防止这种情况的发生,ActiveMQ在失效备援时会解除所有的阻塞调用,同时抛出一个 javax.jms.JMSException异常(如果是JMS)或ActiveMQException异常。异常的错误代码是ActiveMQException.UNBLOCKED。客户端需要自行处理这个异常,并且进行 必要的操作重试。 - 如果被解除阻塞的调用是commit()或者prepare(),那么这个事务会被自动地回滚,并且HornetQ + 如果被解除阻塞的调用是commit()或者prepare(),那么这个事务会被自动地回滚,并且ActiveMQ 会抛出一个javax.jms.TransactionRolledBackException(如果是JMS) 或都是一个ActiveMQException,错误代码为 ActiveMQException.TRANSACTION_ROLLED_BACK(如果是核心接口)。 @@ -236,7 +236,7 @@ >ActiveMQException.TRANSACTION_ROLLED_BACK(如果是核心接口)。 客户端需要自行处理这些异常,进行必要的回滚处理。注意这里不需要人工将会话进行回滚-此时它已经 被回滚了。用户可以通过同一个会话重试该事务操作。 - HornetQ发布包中包括了一个完整的例子来展示如何处理这种情况。参见 + ActiveMQ发布包中包括了一个完整的例子来展示如何处理这种情况。参见 如果是在提交过程中发生了失效备援,服务器将这个阻塞调用解除。这种情况下客户端很难确定在事故发生 之前事务是否在主服务器中得到了处理。 @@ -244,7 +244,7 @@ ,并且在提交的调用被解除后重新尝试事务操作。如果在失效备援前事务确实在主服务器上已经完成提交,那么 当事务进行重试时,重复检测功能可以保证重复发送的消息被丢弃,这样避免了消息的重复。 - 通过处理异常和重试,适当处理被解除的阻塞调用并配合重复检测功能,HornetQ可以在故障条件下保证 + 通过处理异常和重试,适当处理被解除的阻塞调用并配合重复检测功能,ActiveMQ可以在故障条件下保证 一次并且只有一次的消息传递,没有消息丢失和消息重复。
@@ -260,9 +260,9 @@ 连接故障的通知 JMS提供了标准的异步接收连接故障通知的机制:java.jms.ExceptionListener。 请参考JMS的javadoc或者其它JMS教程来进一步了解怎样使用这个接口。 - HornetQ的核心接口也提供了一个相似的接口 + ActiveMQ的核心接口也提供了一个相似的接口 org.hornet.core.client.SessionFailureListener - 任何ExceptionListener或SessionFailureListener的实例,在发生连接故障时,都会被HornetQ + 任何ExceptionListener或SessionFailureListener的实例,在发生连接故障时,都会被ActiveMQ 调用,不管该连接是否得到了失效备援、重新连接还是得到了恢复。
@@ -270,7 +270,7 @@ 在某些情况下你可能不需要自动的客户端失效备援,希望自己来处理连接故障,使用自己的重新连接方案等。 我们把它称之为应用层失效备援,因为它是发生在应用层的程序中。 为了实现应用层的失效备援,你可以使用监听器(listener)的方式。如果使用的是JMS,你需要在JMS连接上 - 设置一个ExceptionListener类。这个类在连接发生故障时由HornetQ调用。在这个类 + 设置一个ExceptionListener类。这个类在连接发生故障时由ActiveMQ调用。在这个类 中你可以将旧的连接关闭,使用JNDI查找新的连接工厂并创建新的连接。这里你可以使用 HA-JNDI 来保证新的连接工厂来自于另一个服务器。