http://git-wip-us.apache.org/repos/asf/activemq-6/blob/d18c42b0/docs/user-manual/zh/clusters.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/zh/clusters.xml b/docs/user-manual/zh/clusters.xml
deleted file mode 100644
index 107addf..0000000
--- a/docs/user-manual/zh/clusters.xml
+++ /dev/null
@@ -1,550 +0,0 @@
-<?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="clusters">
- <title>é群</title>
- <section>
- <title>é群æ¦è¿°</title>
-
<para>ActiveMQé群æ¯ç±ä¸ç»ActiveMQæå¡å¨ç»æçéåï¼å®ä»¬åååä½è¿è¡æ¶æ¯å¤çãé群ä¸æ¯ä¸ªä¸»èç¹å°±æ¯ä¸ä¸ª
-
ActiveMQæå¡å¨ï¼å®ç®¡çèªå·±çè¿æ¥å¹¶å¤çèªå·±çæ¶æ¯ãè¦å°ä¸ä¸ªActiveMQæå¡å¨é
置为é群æå¡å¨ï¼éè¦å°é
ç½®
-
æ件<literal>activemq-configuration.xml</literal>ä¸<literal>clustered</literal>çå¼è®¾
-
为<literal>true</literal>ãé»è®¤å¼æ¯<literal>false</literal>ã</para>
- <para>è¦ç»æä¸ä¸ªé群ï¼æ¯ä¸ªèç¹é½è¦å¨å
¶æ ¸å¿é
ç½®æ件<literal>activemq-configuration.xml</literal>
-
ä¸å£°æ<emphasis>é群è¿æ¥</emphasis>ï¼ç¨æ¥å»ºç«ä¸é群ä¸å
¶å®èç¹çéè¿
ãæ¯ä¸¤ä¸ªèç¹é´é½æ¯éè¿å
é¨çä¸ä¸ª
- <emphasis>æ ¸å¿æ¡¥</emphasis>ï¼åè§<xref
linkend="core-bridges" />ï¼è¿æ¥çãè¿äºè¿æ¥ç建ç«æ¯
- éæçï¼ï¼ä½
ä¸éè¦ä¸ºæ¯ä¸ªè¿æ¥æ¾å¼å°å£°æä¸ä¸ªæ¡¥ãé群è¿æ¥çä½ç¨æ¯å¨é群çå个èç¹é´è¿è¡è´è½½å¹³è¡¡ã</para>
- <para>ActiveMQå¯ä»¥éç¨ä¸åçææç»ææ¥ç»æé群ãæ¬ç«
åé¢å°è®²è¿°å ç§å¸¸ç¨çææç»æã</para>
-
<para>æ们è¿å°è®¨è®ºå®¢æ·ç«¯çè´è½½åè¡¡ï¼ï¼å®¢æ·ç«¯å¦ä½åè¡¡å
¶ä¸é群åèç¹çè¿æ¥ï¼ä»¥åæ¶æ¯çååé
ï¼ï¼å¨èç¹é´åç
- çåé
æ¶æ¯ä»¥é¿å
æ¶æ¯å®ä¹ï¼starvationï¼ã</para>
- <para>æ¬ç«
è¿æ¶åé群çå¦ä¸ä¸ªéè¦æ¹é¢ï¼ï¼<emphasis>æå¡å¨åç°</emphasis>ï¼å³æå¡å¨éè¿å¹¿æçæ¹å¼å°
- èªå·±çè¿æ¥ä¿¡æ¯åè¯å®¢æ·ç«¯æå
¶å®æå¡å¨ï¼ä»¥ä½¿å®ä»¬è½ä¸å
¶å»ºç«è¿æ¥ï¼ä¸éè¦é¢å¤çé
ç½®ã</para>
- </section>
- <section id="clusters.server-discovery">
- <title>æå¡å¨åç°</title>
-
<para>æå¡å¨åç°æ¯ææå¡å¨éè¿å¹¿æçæ¹å¼å°èªå·±çè¿æ¥è®¾ç½®åéå°ç½ç»ä¸çæºå¶ï¼å®æ两个ç®çï¼</para>
- <itemizedlist>
- <listitem>
-
<para>被æ¶æ¯å®¢æ·ç«¯åç°ã客æ·ç«¯æ¥å°å¹¿æåå¯ä»¥ç¥éé群ä¸æåªäºæå¡å¨å¤äºå·¥ä½ç¶æ以åå¦ä½ä¸å®ä»¬
-
建ç«è¿æ¥ãè½ç¶å®¢æ·ç«¯<emphasis>å¯ä»¥</emphasis>å¯ä»¥å¨åå§åæ¶æ¥åä¸ä¸ªé群æå¡å¨çå表ï¼
- ä½æ¯è¿æ
·åä¸å¹¿ææ¹å¼ç¸æ¯ä¸å¤çµæ´»ãæ¯å¦é群ä¸ææå¡å¨ç¦»å¼ææ°å
å
¥æ¶ï¼å表çæ¹å¼ä¸è½åæ¶æ´æ°è¿äºä¿¡æ¯ã</para>
- </listitem>
- <listitem>
- <para>被å
¶å®æå¡å¨åç°ãéè¿å¹¿æï¼æå¡å¨ä¹é´å¯ä»¥èªå¨å»ºç«å½¼æ¤é´çè¿æ¥ï¼ä¸éè¦äºå
ç¥éé群ä¸å
¶å®
- æå¡å¨çä¿¡æ¯ã</para>
- </listitem>
- </itemizedlist>
- <para>æå¡å¨åç°ä½¿ç¨<ulink
url="http://en.wikipedia.org/wiki/User_Datagram_Protocol"
-
>UDP</ulink>åè®®æ¥å¹¿æè¿æ¥è®¾ç½®ãå¦æç½ç»ä¸UDP被å
³éï¼åä¸è½ä½¿ç¨æå¡å¨åç°åè½ãåªæç¨æ¾å¼
-
å°æå®æå¡å¨çæ¹æ³æ¥è®¾ç½®é群æé群ç客æ·ç«¯ã</para>
- <section id="clusters.broadcast-groups">
- <title>广æç»</title>
-
<para>æå¡å¨ä»¥å¹¿æç»çæ¹å¼æ¥å¹¿æå®çè¿æ¥å¨ä¿¡æ¯ãè¿æ¥å¨å®ä¹äºå¦ä½ä¸è¯¥æå¡å¨å»ºç«è¿æ¥çä¿¡æ¯ãå
³äºè¿æ¥å¨æ´å¤ç
- 解éï¼è¯·åè§<xref linkend="configuring-transports"
/>ã</para>
- <para>广æç»å
æ¬äºä¸ç³»åçè¿æ¥å¨å¯¹ãæ¯ä¸ªè¿æ¥å¨å¯¹ç±ä¸»æå¡å¨çè¿æ¥å¨åå¤ä»½ï¼å¯éï¼æå¡å¨è¿æ¥å¨ä¿¡æ¯ç»æã
-
广æç»è¿å®ä¹äºæ使ç¨çUDPçå¨åå端å£ä¿¡æ¯ã</para>
- <para>广æç»çé
ç½®ä¸æå¡å¨é
ç½®æ件<literal
-
>activemq-configuration.xml</literal>ä¸ãä¸ä¸ªActiveMQæå¡å¨å¯ä»¥æå¤ä¸ªå¹¿æç»ãææç广æç»
- å¿
éå®ä¹å¨<literal>broadcast-groups</literal>å
ã</para>
-
<para>让æ们æ¥çä¸ä¸ª<literal>activemq-configuration.xml</literal>æ件ä¸å¹¿æç»çä¾åï¼</para>
- <programlisting><broadcast-groups>
- <broadcast-group name="my-broadcast-group">
- <local-bind-address>172.16.9.3</local-bind-address>
- <local-bind-port>54321</local-bind-port>
- <group-address>231.7.7.7</group-address>
- <group-port>9876</group-port>
- <broadcast-period>2000</broadcast-period>
- <connector-ref connector-name="netty-connector"
- backup-connector="backup-connector"/>
- </broadcast-group>
-</broadcast-groups></programlisting>
- <para>æäºå¹¿æç»çåæ°æ¯å¯éçï¼é常æ
åµä¸å¯ä»¥ä½¿ç¨é»è®¤å¼ãå¨ä¸é¢ä¾åä¸æ们为äºè¯´æç®çç»åºäºè¿äºåæ°ã
- ä¸é¢æ¯è¿äºåæ°ç说æï¼</para>
- <itemizedlist>
- <listitem>
-
<para><literal>name</literal>ãæ¯ä¸ªå¹¿æç»éè¦æä¸ä¸ªå¯ä¸çååã</para>
- </listitem>
- <listitem>
-
<para><literal>local-bind-address</literal>ãè¿ä¸ªåæ°æ¯å¥æ¥åçæ¬å°ç»å®å°åãå¦æå¨æå¡å¨
- ä¸æå¤ä¸ªç½ç»æ¥å£å¡æ¶ï¼å¿
é¡»è¦æå®ä½¿ç¨çæ¯åªä¸ªæ¥å£ãå¦æè¿ä¸ªåæ°æ²¡ææå®ï¼é£ä¹å°ä½¿ç¨ç³»ç»å
æ ¸
- æéå®çIPå°åã</para>
- </listitem>
- <listitem>
-
<para><literal>local-bind-port</literal>ãè¿ä¸ªåæ°æå®äºå¥æ¥åçæ¬å°ç»å®ç«¯å£ãé常æ
åµä¸
- å¯ä»¥ä½¿ç¨å
¶é»è®¤å¼<literal>-1</literal>ï¼è¡¨ç¤ºä½¿ç¨éæºç端å£ãè¿ä¸ªåæ°æ»æ¯å
-
<literal>local-bind-address</literal>ä¸èµ·å®ä¹ã</para>
- </listitem>
- <listitem>
-
<para><literal>group-address</literal>ãè¿ä¸ªåæ°æå®çæ¯å¹¿æå°åãå®æ¯ä¸ä¸ªDç±»çIPå°åï¼
-
åå¼èå´æ¯<literal>224.0.0.0</literal>å°<literal>239.255.255.255</literal>ã
-
å°å<literal>224.0.0.0</literal>æ¯ä¿çå°åï¼æ以ä¸è½ä½¿ç¨ãè¿ä¸ªåæ°æ¯å¿
éæå®ã</para>
- </listitem>
- <listitem>
-
<para><literal>group-port</literal>ãè¿ä¸ªåæ°è®¾å®å¹¿æçUDP端å£ã
- æ¯ä¸ä¸ªå¿
éæå®çåæ°ã</para>
- </listitem>
- <listitem>
-
<para><literal>broadcast-period</literal>ãæå®ä¸¤æ¬¡å¹¿æä¹é´çæ¶é´é´éï¼åä½æ¯«ç§ã
-
è¿æ¯ä¸ä¸ªå¯éåæ°ï¼å®çé»è®¤å¼æ¯<literal>1000</literal>毫ç§ã</para>
- </listitem>
- <listitem>
-
<para><literal>connector-ref</literal>ãè¿ä¸ªåæ°æå®äºè¦å¹¿æçè¿æ¥å¨ä»¥åå¯éçå¤ä»½è¿æ¥å¨ã
- ï¼åè§<xref linkend="configuring-transports"
/>ï¼ã
-
<literal>connector-name</literal>å±æ§çå¼æ¯è¿æ¥å¨çååï¼
-
<literal>backup-connector</literal>å±æ§æ¯å¤ä»½è¿æ¥å¨çååï¼æ¯å¯éå±æ§ã</para>
- </listitem>
- </itemizedlist>
- </section>
- <section id="clusters.discovery-groups">
- <title>åç°ç»</title>
-
<para>广æç»è§å®äºå¦ä½å¹¿æè¿æ¥å¨çä¿¡æ¯ï¼åç°ç»åå®ä¹çå¦ä½æ¥æ¶è¿æ¥å¨çä¿¡æ¯ã</para>
- <para>ä¸ä¸ªåç°ç»å
æ¬äºä¸ç³»åçè¿æ¥å¨å¯¹ï¼ï¼æ¯ä¸ªè¿æ¥å¨å¯¹ä»£è¡¨ä¸ä¸ªä¸åçæå¡å¨å¹¿æçè¿æ¥å¨ä¿¡æ¯ãæ¯å½æ¥æ¶ä¸æ¬¡å¹¿æï¼
- è¿ä¸ªè¿æ¥å¯¹çå表就被æ´æ°ä¸æ¬¡ã</para>
- <para>å¦æå¨ä¸å®æ¶é´å
没ææ¶å°æ个æå¡å¨ç广æï¼åå
¶ç¸åºçè¿æ¥å¨å¯¹å°ä»å表ä¸å é¤ã</para>
- <para>åç°ç»å¨ActiveMQä¸æ两å¤åºç¨ï¼</para>
- <itemizedlist>
- <listitem>
-
<para>å¨å建é群è¿æ¥æ¶ç¨æ¥å¤æé群ä¸åªäºæå¡å¨æ¯å¯ä»¥è¿æ¥çã</para>
- </listitem>
- <listitem>
-
<para>客æ·ç«¯ç¨æ¥åç°åªäºæå¡å¨å¯ä»¥è¿æ¥ã</para>
- </listitem>
- </itemizedlist>
- </section>
- <section>
- <title>å¨æå¡å¨ç«¯å®ä¹åç°ç»ã</title>
-
<para>æå¡å¨ç«¯çåç°ç»å®ä¹å¨<literal>activemq-configuration.xml</literal>é
ç½®æ件ä¸ãææçåç°ç»é½å¿
é¡»
- å¨<literal>discovery-groups</literal>å
å®ä¹ãåç°ç»å¯ä»¥å®ä¹å¤ä¸ªã请çä¸é¢çä¾åï¼</para>
- <programlisting><discovery-groups>
- <discovery-group name="my-discovery-group">
- <local-bind-address>172.16.9.7</local-bind-address>
- <group-address>231.7.7.7</group-address>
- <group-port>9876</group-port>
- <refresh-timeout>10000</refresh-timeout>
- </discovery-group>
-</discovery-groups></programlisting>
- <para>ä¸é¢æ¯å¯¹æ¯ä¸ªåæ°ç解éï¼</para>
- <itemizedlist>
- <listitem>
- <para><literal>name</literal>å±æ§ãæ¯ä¸ªåç°ç»é½å¿
é¡»æä¸ä¸ªå¯ä¸çååã</para>
- </listitem>
- <listitem>
- <para><literal>local-bind-address</literal>ãå¦æä½
ç主æºæå¤ä¸ªç½ç»æ¥å£ï¼ä½
å¯è½å¸æåç°ç»åªçå¬ä¸ä¸ªæå®ç
-
ç½ç»æ¥å£ãè¿ä¸ªåæ°å°±å¯ä»¥ç¨äºè¿ä¸ªç®çãå®æ¯ä¸ä¸ªå¯éåæ°ã</para>
- </listitem>
- <listitem>
-
<para><literal>group-address</literal>ãéè¦çå¬ç广æå°åãå®éè¦ä¸å¹¿æç»ç
-
<literal>group-address</literal>ä¸è´æå¯ä»¥æ¶å°å¹¿æç»çä¿¡æ¯ãè¿æ¯ä¸ä¸ªå¿
è¦åæ°ã</para>
- </listitem>
- <listitem>
-
<para><literal>group-port</literal>ãéè¦çå¬çUDP端å£ãå®éè¦ä¸å¹¿æç»ç
-
<literal>group-port</literal>å¼ç¸åæå¯ä»¥æ¶å°å¹¿æç»çä¿¡æ¯ãè¿æ¯ä¸ä¸ªå¿
è¦åæ°ã</para>
- </listitem>
- <listitem>
-
<para><literal>refresh-timeout</literal>ãè¿ä¸ªåæ°å³å®äºå¨æ¶å°æ个æå¡å¨ç广æåï¼éè¦çå¾
- å¤é¿æ¶é´ä¸ä¸æ¬¡å¹¿æå¿
é¡»æ¶å°ï¼å¦åå°è¯¥æå¡å¨çè¿æ¥å¨å¯¹ä»å表ä¸å
é¤ãé常è¿ä¸ªåæ°çå¼åºè¯¥è¿å¤§äº
-
广æç»ç<literal>broadcast-period</literal>ï¼å¦åä¼ä½¿æå¡å¨ä¿¡æ¯ç±äºå°çæ¶é´å·®å¼è丢失ã
-
è¿ä¸ªåæ°æ¯å¯éçï¼å®çé»è®¤å¼æ¯<literal>10000</literal>毫ç§ï¼10ç§ï¼ã</para>
- </listitem>
- </itemizedlist>
- </section>
- <section id="clusters-discovery.groups.clientside">
- <title>客æ·ç«¯çåç°ç»</title>
- <para>ç°å¨è®¨è®ºå¦ä½é
ç½®ActiveMQ客æ·ç«¯æ¥åç°å¯ä»¥è¿æ¥çæå¡å¨å表ã使ç¨JMSæ¶æç¨çæ¹æ³ä¸ä½¿ç¨æ
¸å¿æ¥å£æ¶æç¨ç
- æ¹æ³ææä¸åã</para>
- <section>
- <title>使ç¨JMSæ¶å®¢æ·ç«¯åç°çé
ç½®æ¹æ³</title>
-
<para>å¦æ使ç¨JMSï¼å¹¶ä¸å¨æå¡å¨ç«¯çJMSè¿æ¥å·¥åæ¯æ³¨åå°JNDIçæ
åµä¸ï¼ä½ å¯ä»¥å¨æå¡å¨ç«¯çé
ç½®æ件
-
<literal>activemq-jms.xml</literal>ä¸æå®è¿æ¥å·¥åæç¨çåç°ç»ãå¦ä¸é¢æ示ï¼</para>
- <programlisting><connection-factory
name="ConnectionFactory">
- <discovery-group-ref discovery-group-name="my-discovery-group"/>
- <entries>
- <entry name="ConnectionFactory"/>
- </entries>
-</connection-factory></programlisting>
- <para>å
¶ä¸<literal>discovery-group-ref</literal>çå¼æ¯å®ä¹å¨
-
<literal>activemq-configuration.xml</literal>æ件ä¸çä¸ä¸ªåç°ç»ã</para>
-
<para>å½è¿æ¥å·¥åä»JNDIä¸è½½å°å®¢æ·ç«¯æ¶ï¼ä½¿ç¨å®å建è¿æ¥å°±ä¼å¨å表ä¸çæå¡å¨é´è¿è¡è´è½½åè¡¡ã
-
客æ·ç«¯éè¿çå¬åç°ç»ä¸ç广æå°åå¯ä»¥ä¸ææ´æ°è¿ä¸ªæå¡å¨å表ã</para>
-
<para>å¦æ使ç¨JMSä½æ¯ä¸ç¨JNDIï¼èæ¯ç´æ¥å®ä¾åJMSçè¿æ¥å·¥åçè¯ï¼å¯ä»¥ç¨éå½çæ¹æ³æ¥è®¾ç½®åç°ç»çå个
- åæ°ãå¦ä¸æ示ï¼<programlisting>final String
groupAddress = "231.7.7.7";
-
-final int groupPort = 9876;
-
-ConnectionFactory jmsConnectionFactory =
- ActiveMQJMSClient.createConnectionFactory(groupAddress, groupPort);
-
-Connection jmsConnection1 = jmsConnectionFactory.createConnection();
-
-Connection jmsConnection2 =
jmsConnectionFactory.createConnection();</programlisting></para>
-
<para><literal>refresh-timeout</literal>åæ°å¯ä»¥ç´æ¥å¨è¿æ¥å·¥åä¸ä½¿ç¨
-
<literal>setDiscoveryRefreshTimeout()</literal>æ¹æ³è®¾ç½®ã</para>
-
<para>è¿æ¥å·¥åè¿æä¸ä¸ªæ¹æ³<literal>setDiscoveryInitialWaitTimeout()</literal>ãå®å¯ä»¥è®¾ç½®è¿æ¥å·¥åç
- åå§çå¾
æ¶é´ãå½ä¸ä¸ªè¿æ¥å·¥å被å建åç«å³è¿è¡ç¨äºå建è¿æ¥çè¯ï¼è¿æ¥å·¥åå¯è½æ²¡æ足å¤çæ¶é´æ¥æ¥æ¶å
- 个æå¡å¨ååºç广æä¿¡æ¯ï¼ä¹å°±æ
æ³å»ºç«å®æ´çæå¡å¨å表ãæäºè¿ä¸ªåæ°ï¼è¿æ¥å·¥åä¼å¨é¦æ¬¡å建è¿æ¥æ¶
- çå¾
ä¸å®çæ¶é´ï¼ä»¥æ¥æ¶å¹¿æãé»è®¤å¼æ¯<literal>10000</literal>毫ç§ã</para>
- </section>
- <section>
- <title>使ç¨æ ¸å¿APIç客æ·ç«¯çé
ç½®</title>
- <para>å¦æ使ç¨æ
¸å¿æ¥å£ç´æ¥å建<literal>ClientSessionFactory</literal>çå®ä¾ï¼å¯ä»¥ä½¿ç¨ç¸åºçæ¹æ³
- ç´æ¥è¿è¡åæ°ç设置ï¼å¦ï¼
- <programlisting>
- final String groupAddress = "231.7.7.7";
- final int groupPort = 9876;
- SessionFactory factory =
ActiveMQClient.createClientSessionFactory(groupAddress, groupPort);
- ClientSession session1 = factory.createClientSession(...);
ClientSession
- session2 = factory.createClientSession(...);
-
- </programlisting>
- </para>
-
<para>æ¹æ³<literal>setDiscoveryRefreshTimeout()</literal>å¯ä»¥ç¨æ¥ç´æ¥è®¾ç½®åæ°
- <literal>refresh-timeout</literal>ã</para>
-
<para>ä¼è¯å·¥åè¿æä¸ä¸ªæ¹æ³<literal>setDiscoveryInitialWaitTimeout()</literal>ãå®å¯ä»¥è®¾ç½®ä¼è¯å·¥åç
- åå§çå¾
æ¶é´ãå½ä¸ä¸ªä¼è¯å·¥å被å建åç«å³è¿è¡ç¨äºå建è¿æ¥çè¯ï¼è¯¥ä¼è¯å·¥åå¯è½æ²¡æ足å¤çæ¶é´æ¥æ¥æ¶å
- 个æå¡å¨ååºç广æä¿¡æ¯ï¼ä¹å°±æ
æ³å»ºç«å®æ´çæå¡å¨å表ãæäºè¿ä¸ªåæ°ï¼ä¼è¯å·¥åä¼å¨é¦æ¬¡å建è¿æ¥æ¶
- çå¾
ä¸å®çæ¶é´ï¼ä»¥æ¥æ¶å¹¿æãé»è®¤å¼æ¯<literal>10000</literal>毫ç§ã</para>
- </section>
- </section>
- </section>
- <section>
- <title>æå¡å¨ç«¯æ¶æ¯çè´è½½åè¡¡</title>
-
<para>å¦æé群ååèç¹é´å®ä¹äºé群è¿æ¥ï¼ActiveMQå¯ä»¥å¯¹å°è¾¾ä¸ä¸ªèç¹çæ¶æ¯è¿è¡è´è½½åè¡¡ã</para>
-
<para>举ä¸ä¸ªç®åçä¾åãä¸ä¸ªé群æ4个èç¹ï¼åå«ç§°ä¸ºèç¹AãBãCåèç¹Dãå®ä»¬ç»æäºä¸ä¸ª
- <emphasis>对称å¼é群</emphasis>ï¼æå
³å¯¹ç§°å¼é群åè§<xref linkend="symmetric-cluster" />ï¼ã
-
å¨æ¯ä¸ªèç¹ä¸é¨ç½²äºä¸ä¸ªå为<literal>OrderQueue</literal>çéåã</para>
- <para>ä¸ä¸ªå®¢æ·ç«¯Caè¿æ¥å°èç¹A并åå
¶åé订åæ¶æ¯ã客æ·ç«¯PaãPbãPcåPdåå«è¿æ¥å°èç¹AãBãCåD并æ¥æ¶å¤ç
-
è¿äºè®¢åæ¶æ¯ãå¦æå¨èç¹Aä¸æ²¡æå®ä¹é群è¿æ¥ï¼é£ä¹è®¢åæ¶æ¯é½åéå°èç¹Aä¸çéå<literal>OrderQueue</literal>
- ä¸ãå
æ¤åªæè¿æ¥å°èç¹Aç客æ·ç«¯Paæè½æ¥æ¶å°è®¢åæ¶æ¯ã</para>
-
<para>å¦æå¨èç¹Aå®ä¹äºé群è¿æ¥çè¯ï¼åéå°èç¹Açæ¶æ¯è¢«è½®æµï¼round-robinï¼ä»èç¹Aåé
å°å个èç¹ä¸ç
- <literal>OrderQueue</literal>éåä¸ãè¿ç§æ¶æ¯åé
å®å
¨å¨æå¡å¨ç«¯å®æï¼å®¢æ·ç«¯åªåèç¹Aåéæ¶æ¯ã</para>
- <para>ä¾å¦å°è¾¾èç¹Açæ¶æ¯å¯è½ä»¥ä¸å顺åºè¿è¡åé
ï¼BãDãCãAãBãDãCãAãBãDãå
·ä½ç顺åºåå³äºèç¹å¯å¨ç
- å
åï¼ä½æ¯å
¶ç®æ³æ¯ä¸åçï¼å³round-robinï¼ã</para>
- <para>ActiveMQé群è¿æ¥å¨è¿è¡æ¶æ¯è´è½½åè¡¡æ¶ï¼å¯ä»¥é
ç½®æç»ä¸è´è½½å衡模å¼ï¼å³ä¸ç®¡å个èç¹ä¸ææ
åéçæ¥æ¶è
ï¼ä¸å¾å¨
- ææèç¹é´è¿è¡æ¶æ¯çåé
ãä¹å¯ä»¥é
ç½®æ为æºè½è´è½½å衡模å¼ï¼å³åªå°æ¶æ¯åé
å°æåéæ¥æ¶è
çèç¹ä¸ãè¿ä¸¤ç§æ¨¡å¼æ们
- é½å°ä¸¾ä¾è¯´æãé¦å
æ们å
ä»ç»ä¸è¬çé群è¿æ¥é
ç½®ã</para>
- <section id="clusters.cluster-connections">
- <title>é
ç½®é群è¿æ¥</title>
-
<para>é群è¿æ¥å°ä¸ç»æå¡å¨è¿æ¥æ为ä¸ä¸ªé群ï¼æ¶æ¯å¯ä»¥å¨é群çèç¹ä¹é´è¿è¡è´è½½åè¡¡ãé群è¿æ¥çé
ç½®å¨
- <literal>activemq-configuration.xml</literal>æ件ä¸ç
- <literal>cluster-connection</literal>å
ãä¸ä¸ªActiveMQæå¡å¨å¯ä»¥æé¶ä¸ªæå¤ä¸ªé群è¿æ¥ã
- ä¸é¢æ¯ä¸ä¸ªå
¸åçä¾åï¼</para>
- <programlisting>
-<cluster-connections>
- <cluster-connection name="my-cluster">
- <address>jms</address>
- <retry-interval>500</retry-interval>
- <use-duplicate-detection>true</use-duplicate-detection>
-
<forward-when-no-consumers>false</forward-when-no-consumers>
- <max-hops>1</max-hops>
- <discovery-group-ref discovery-group-name="my-discovery-group"/>
- </cluster-connection>
-</cluster-connections>
- </programlisting>
- <para>ä¸é¢ç»åºäºé群è¿æ¥çææå¯é
ç½®åæ°ãå¨å®é
åºç¨ä¸æäºä½ å¯ä»¥ä½¿ç¨é»è®¤å¼ï¼ä¸å¿
å
¨é¨ç»åºã</para>
- <itemizedlist>
- <listitem>
-
<para><literal>address</literal>ãæ¯ä¸ªé群è¿æ¥åªæå¡äºåéå°ä»¥è¿ä¸ªåæ°çå¼ä¸ºå¼å§ç
- å°åçæ¶æ¯ã</para>
-
<para>æ¬ä¾ä¸çé群è¿æ¥åªå¯¹åå¾ä»¥<literal>jms</literal>为å¼å§çå°åçæ¶æ¯è¿è¡è´è½½åè¡¡ç
- å¤çãè¿ä¸ªé群è¿æ¥å®é
ä¸è½å¤å¤çææJMSéååè¯é¢ç订é
ä¸çæ¶æ¯ï¼è¿æ¯å½ä¸ºææJMSçéå
- æ订é
é½æ å°å°å
æ
¸ä¸ä»¥âjmsâå¼å¤´çéåã</para>
- <para>è¿ä¸ªå°åå¯ä»¥ä¸ºä»»ä½å¼ï¼èä¸å¯ä»¥é
ç½®å¤ä¸ªé群è¿æ¥ï¼æ¯ä¸ªè¿æ¥çå°åå¼å¯ä»¥ä¸åãè¿æ ·ActiveMQ
-
å¯ä»¥åæ¶å¯¹ä¸åå°ååæ¶è¿è¡æ¶æ¯çè´è½½åè¡¡ãæçå°åçè³å¯è½å¨å
¶å®é群çèç¹ä¸ãè¿ä¹å°±æè°ç
-
ä¸ä¸ªActiveMQæå¡å¨å¯ä»¥åæ¶åä¸å°å¤ä¸ªé群ä¸ã</para>
- <para>è¦æ³¨æå«é
æå¤ä¸ªé群è¿æ¥çå°åäºç¸éå¤ãæ¯å¦ï¼å°åâeuropeâåâeurope.newsâå°±äºç¸éå¤ï¼
- å°±ä¼é
æåä¸ä¸ªæ¶æ¯ä¼è¢«å¤ä¸ªé群è¿æ¥è¿è¡åé
ï¼è¿æ
·æå¯è½åçéå¤ä¼ éã</para>
- <para>æ¬åæ°æ¯å¿
é¡»æå®çã</para>
- </listitem>
- <listitem>
-
<para><literal>retry-interval</literal>ãå¦åæè¿°ï¼ä¸ä¸ªé群è¿æ¥å®é
ä¸å¨å
é¨æ¯ç¨æ¡¥å°ä¸¤
-
个èç¹è¿æ¥èµ·æ¥ãå¦æé群è¿æ¥å·²ç»å建ä½æ¯ç®çèç¹è¿æªå¯å¨ï¼ææ£å¨éå¯ï¼è¿æ¶é群è¿æ¥å°±ä¼ä¸æ
-
éè¯ä¸è¿ä¸ªèç¹çè¿æ¥ï¼ç´å°èç¹å¯å¨å®æ¯è¿æ¥æå为æ¢ã</para>
-
<para>è¿ä¸ªåæ°å³å®äºä¸¤æ¬¡éè¯ä¹é´çæ¶é´é´éï¼åä½æ¯æ¯«ç§ãå®ä¸æ¡¥çåæ°<literal>retry-interval</literal>
- çå«ä¹ç¸åï¼åè§<xref linkend="core-bridges"
/>ï¼ã</para>
-
<para>è¿ä¸ªåæ°æ¯å¯éçï¼é»è®¤å¼æ¯<literal>500</literal>毫ç§ã</para>
- </listitem>
- <listitem>
-
<para><literal>use-duplicate-detection</literal>ãé群è¿æ¥ä½¿ç¨æ¡¥æ¥è¿æ¥åèç¹ï¼èæ¡¥å¯ä»¥
- éè¿é
ç½®åæ¯ä¸ªè½¬åçæ¶æ¯æ·»å
ä¸ä¸ªéå¤idçå±æ§ãå¦æç®çèç¹å´©æºå¹¶éå¯ï¼æ¶æ¯å¯ä»¥è¢«éæ°åéã
- éå¤æ£æµçåè½å°±æ¯å¨è¿ç§æ
åµä¸å°éå¤åéçæ¶æ¯è¿è¡è¿æ»¤å¹¶ä¸¢å¼ã</para>
- <para>è¿ä¸ªåæ°ä¸æ¡¥çåæ°<literal
- >use-duplicate-detection</literal>ç¸åãå
³äºéå¤æ£æµçæ´å¤ä¿¡æ¯ï¼è¯·åè§
- <xref linkend="duplicate-detection"/>ã</para>
-
<para>è¿åæ°æ¯å¯éçï¼é»è®¤å¼æ¯<literal>true</literal>ã</para>
- </listitem>
- <listitem>
-
<para><literal>forward-when-no-consumers</literal>ãè¿ä¸ªåæ°å³å®äºæ¯å¦å没æåéæ¥æ¶è
- çèç¹åé
æ¶æ¯ãå³ä¸ç®¡æ没æåéçæ¥æ¶è
ï¼æ¶æ¯å¨ææçèç¹é´è½®æµåé
ã</para>
-
<para>å¦æè¿ä¸ªåæ°è®¾ä¸º<literal>true</literal>ï¼åæ¶æ¯å°±ä¼è½®æµå¨æ¯ä¸ªèç¹é´åé
ï¼ä¸ç®¡æ¯å¦
- èç¹ä¸æ没æç¸åºçæ¥æ¶è
ï¼æè
ææ¥æ¶è
ä½æ¯å
·æä¸å¹é
çéæ©å¨ï¼ã注æï¼å¦æå
¶å®èç¹ä¸æ²¡æ
-
ä¸æ¬èç¹ååçéåï¼ActiveMQä¸ä¼å°æ¶æ¯è½¬åå°é£äºèç¹ä¸å»ï¼ä¸åæ¬åæ°çéå¶ã</para>
- <para>å¦æåæ°è®¾ä¸º<literal>false</literal>ï¼
ActiveMQä¸å°æ¶æ¯è½¬åå°é群ä¸é£äºæçéåæ¥æ¶è
- çèç¹ä¸ãå¦ææ¥æ¶è
æéæ©å¨ï¼åè³å°æä¸ä¸ªéæ©å¨ä¸æ转åçæ¶æ¯å¹é
æå¯ï¼å¦åä¸è½¬åã</para>
-
<para>æ¬åæ°æ¯å¯éçï¼é»è®¤å¼æ¯<literal>false</literal>ã</para>
- </listitem>
- <listitem>
-
<para><literal>max-hops</literal>ãå½ä¸ä¸ªé群è¿æ¥å¨ç¡®å®è¿è¡æ¶æ¯è´è½½åè¡¡çèç¹ç»æ¶ï¼è¿äº
-
èç¹ä¸ä¸å®æ¯ä¸æ¬èç¹ç´æ¥ç¸è¿çèç¹ãActiveMQå¯ä»¥éè¿å
¶å®ActiveMQèç¹ä½ä¸ºä¸ä»åé£äºéç´æ¥ç¸
- è¿çèç¹è½¬åæ¶æ¯ã</para>
- <para>è¿æ ·å¯ä»¥ä½¿ActiveMQç»ææ´å
å¤æçææç»æ并ä¸ä»å¯æä¾æ¶æ¯çè´è½½åè¡¡ãå¨æ¬ç«
çåé¢æ们è¿è¦ä½
- è¿ä¸æ¥ç讨论ã</para>
- <para>æ¬åæ°æ¯å¯éåæ°ï¼å®çé»è®¤å¼æ¯
<literal>1</literal>ï¼è¡¨ç¤ºæ¶æ¯åªåç´æ¥ç¸è¿çèç¹è¿è¡è´è½½åè¡¡ã</para>
- </listitem>
- <listitem>
-
<para><literal>discovery-group-ref</literal>ãè¿ä¸ªåæ°å³å®äºä½¿ç¨åªä¸ªåç°ç»æ¥è·å¾é群æå¡å¨çå表ã
-
é群è¿æ¥ä¸å表ä¸çæå¡å¨å»ºç«è¿æ¥ã</para>
- </listitem>
- </itemizedlist>
- </section>
- <section id="clusters.clusteruser">
- <title>é群ç¨æ·çå®å
¨ä¿¡æ¯</title>
-
<para>å½é群ä¸ä¸¤ä¸ªèç¹å»ºç«è¿æ¥æ¶ï¼ActiveMQ使ç¨ä¸ä¸ªé群ç¨æ·åé群å¯ç
ãå®ä»¬å®ä¹å¨
-
<literal>activemq-configuration.xml</literal>æ件ä¸ï¼</para>
- <programlisting>
-
<cluster-user>HORNETQ.CLUSTER.ADMIN.USER</cluster-user>
- <cluster-password>CHANGE ME!!</cluster-password>
- </programlisting>
- <warning><para>强ç建议å¨å®é
åºç¨ä¸ä¸è¦ä½¿ç¨é»è®¤çå¼ï¼å¦åä»»æè¿ç¨å®¢æ·ç«¯ä¼ä½¿ç¨è¿äºé»è®¤å¼è¿æ¥å°æå¡å¨ä¸ãå½ä½¿ç¨é»è®¤å¼æ¶ï¼
-
ActiveMQä¼æ£æµå°å¹¶å¨æ¯æ¬¡å¯å¨çæ¶åç»åºè¦åã</para></warning>
- </section>
- </section>
- <section id="clusters.client.loadbalancing">
- <title>客æ·ç«¯è´è½½åè¡¡</title>
-
<para>ActiveMQç客æ·ç«¯è´è½½å衡使åä¸ä¸ªä¼è¯å·¥åæ¯æ¬¡å建ä¸ä¸ªä¼è¯æ¶ï¼é½è¿æ¥å°é群ä¸åçèç¹ä¸ãè¿æ
·å¯ä»¥ä½¿æçæä¼è¯
-
åååå¸å¨é群çå个èç¹ä¸ï¼èä¸ä¼âæ¥æ¤âå°æä¸ä¸ªèç¹ä¸ã</para>
- <para>客æ·ç«¯è´è½½åè¡¡ççç¥æ¯å¯é
ç½®çãActiveMQæä¾ä¸¤ç§ç°æçè´è½½åè¡¡çç¥ãä½
ä¹å¯ä»¥å®ç°èªå·±ççç¥ã</para>
- <para>两ç§ç°æççç¥æ¯ï¼</para>
- <itemizedlist>
- <listitem>
- <para>è½®æµçç¥ï¼Round Robinï¼ãè¿ä¸ªçç¥æ¯å
éæºéæ©ä¸ä¸ªèç¹ä½ä¸ºç¬¬ä¸ä¸ªèç¹ï¼ç¶åä¾æ¬¡éæ©å个èç¹ã</para>
- <para>ä¾å¦ä¸ä¸ªé¡ºåºå¯è½æ¯ B, C, D, A, B, C, D, A,
Bï¼å¦ä¸ä¸ªä¹å¯è½æ¯ D,
- A, B, C, Dï¼A, B, C, D, A æè
C, D, A, B, C, D, A, B,
C, D, Aççã</para>
- </listitem>
- <listitem>
-
<para>éæºçç¥ãæ¯æ¬¡é½æ¯éæºéæ©ä¸ä¸ªèç¹æ¥å»ºç«ä¼è¯ã</para>
- </listitem>
- </itemizedlist>
- <para>ä½ å¯ä»¥å®ç°èªå·±ççç¥ãåªéè¦å®ç°æ¥å£<literal
-
>org.apache.activemq.api.core.client.loadbalance.ConnectionLoadBalancingPolicy</literal>å³å¯ã</para>
- <para>æ ¹æ®ä½ 使ç¨çæ¯JMSè¿æ¯æ
¸å¿æ¥å£ï¼æå®è´è½½åè¡¡çæ¹æ³æ¯ææä¸åçãå¦æä½
ä¸æå®çç¥ï¼é»è®¤ççç¥æ¯<literal
-
>org.apache.activemq.api.core.client.loadbalance.RoundRobinConnectionLoadBalancingPolicy</literal>.</para>
-
<para>å¦æ使ç¨çæ¯JMSï¼å¹¶ä¸JMSè¿æ¥å·¥å注åå°JNDIï¼åä½
éè¦å¨<literal>activemq-jms.xml</literal>æ件ä¸å®ä¹çç¥ï¼å¦ï¼
- <programlisting>
-<connection-factory name="ConnectionFactory">
- <discovery-group-ref discovery-group-name="my-discovery-group"/>
- <entries>
- <entry name="ConnectionFactory"/>
- </entries>
- <connection-load-balancing-policy-class-name>
-
org.apache.activemq.api.core.client.loadbalance.RandomConnectionLoadBalancingPolicy
- </connection-load-balancing-policy-class-name>
-</connection-factory>
- </programlisting>ä¸é¢çé
ç½®å°é¨ç½²ä¸ä¸ªè¿æ¥å·¥åï¼å®çè¿æ¥è´è½½åè¡¡çç¥æ¯éæºçç¥ã</para>
- <para>å¦æ使ç¨JMSï¼ä½æ¯ä½
å¨å®¢æ·ç«¯æ¯ç´æ¥å建è¿æ¥å·¥åçå®ä¾ï¼é£ä¹ä½
éè¦ç¨ç¸åºçæ¹æ³å¨<literal
- >ActiveMQConnectionFactory</literal>ä¸ç´æ¥è®¾ç½®ï¼
- <programlisting>
-ConnectionFactory jmsConnectionFactory =
ActiveMQJMSClient.createConnectionFactory(...);
-jmsConnectionFactory.setLoadBalancingPolicyClassName("com.acme.MyLoadBalancingPolicy");
- </programlisting></para>
- <para>å¦æä½ ä½¿ç¨æ ¸å¿æ¥å£çè¯ï¼ä½
è¦ç´æ¥å¨<literal>ClientSessionFactory</literal>ä¸è®¾ç½®çç¥ï¼
- <programlisting>
-ClientSessionFactory factory = ActiveMQClient.createClientSessionFactory(...);
-factory.setLoadBalancingPolicyClassName("com.acme.MyLoadBalancingPolicy");
- </programlisting></para>
-
<para>è¿æ¥å·¥åè¿è¡è´è½½åè¡¡çæå¡å¨ç»å¯ä»¥æ两ç§æ¹æ³æ¥ç¡®å®ï¼</para>
- <itemizedlist>
- <listitem>
- <para>æ¾å¼æå®æå¡å¨</para>
- </listitem>
- <listitem>
- <para>使ç¨åç°ç»åè½</para>
- </listitem>
- </itemizedlist>
- </section>
- <section>
- <title>æ¾å¼æå®é群æå¡å¨</title>
-
<para>æçç½ç»å¹¶ä¸å¼æ¾UDPï¼æ以就ä¸è½ä½¿ç¨æå¡å¨åç°åè½æ¥è·åæå¡å¨å表ã</para>
- <para>å¨è¿ç§æ
åµä¸ï¼å¯ä»¥æ¾å¼å°å¨æ¯ä¸ªèç¹æ客æ·ç«¯æå®æå¡å¨çå表ãä¸é¢ä»ç»å¦ä½åï¼</para>
- <section>
- <title>å¨å®¢æ·ç«¯æå®æå¡å¨å表</title>
- <para>æ ¹æ®ä½¿ç¨çæ¯JMSè¿æ¯æ
¸å¿æ¥å£ï¼æç¨çæ¹æ³ä¹ä¸åã</para>
- <section>
- <title>使ç¨JMSæ¶æå®æå¡å¨å表</title>
-
<para>å¦æ使ç¨JMSï¼å¹¶ä¸JMSè¿æ¥å·¥åæ¯æ³¨åå°JNDIçè¯ï¼ä½
éè¦å¨æå¡å¨ç«¯çé
ç½®æ件
-
<literal>activemq-jms.xml</literal>ä¸æ¥æå®ï¼å¦ä¸é¢çä¾åï¼</para>
- <programlisting><connection-factory
name="ConnectionFactory">
- <connectors>
- <connector-ref connector-name="my-connector1"
- backup-connector-name="my-backup-connector1"/>
- <connector-ref connector-name="my-connector2"
- backup-connector-name="my-backup-connector2"/>
- <connector-ref connector-name="my-connector3"
- backup-connector-name="my-backup-connector3"/>
- </connectors>
- <entries>
- <entry name="ConnectionFactory"/>
- </entries>
-</connection-factory></programlisting>
- <para>å
¶ä¸ç<literal>connection-factory</literal>å
å¯ä»¥å
å«é¶æå¤ä¸ª
-
<literal>connector-ref</literal>ãæ¯ä¸ª<literal>connector-ref</literal>
-
é½æ¥æ<literal>connector-name</literal>å±æ§åä¸ä¸ªå¯éç<literal
- >backup-connector-name</literal>å±æ§ã<literal
- >connector-name</literal>
å±æ§æåçæ¯ä¸ä¸ªå¨<literal>activemq-configuration.xml</literal>
-
æ件ä¸å®ä¹çè¿æ¥å¨ãè<literal>backup-connector-name</literal>å±æ§ä¹æ¯æåå¨
-
<literal>activemq-configuration.xml</literal>æ件ä¸å®ä¹çä¸ä¸ªè¿æ¥å¨ã
- æå
³è¿æ¥å¨æ´å¤çä¿¡æ¯åè§<xref
linkend="configuring-transports" />ã</para>
- <para>è¿æ¥å·¥åè¿æ ·å°±ä¿åæä¸ç»[è¿æ¥å¨,
å¤ä»½è¿æ¥å¨]对ï¼ç¨äºå®¢æ·ç«¯å¨å建è¿æ¥æ¶çè´è½½åè¡¡ã</para>
- <para>å¦æä½ ä½¿ç¨JMSï¼ä½ä¸ä½¿ç¨JNDIï¼ä½
å¯ä»¥ç´æ¥å建<literal>ActiveMQConnectionFactory</literal>
-
çå®ä¾ï¼ç¶åç¨ç¸åºçæ¹æ³æ¥è®¾å®è¿æ¥å¨å¯¹å表ï¼å¦ä¸ä¾ï¼<programlisting>List<Pair<TransportConfiguration,
TransportConfiguration>> serverList =
- new ArrayList<Pair<TransportConfiguration,
TransportConfiguration>>();
-
-serverList.add(new Pair<TransportConfiguration,
- TransportConfiguration>(liveTC0, backupTC0));
-serverList.add(new Pair<TransportConfiguration,
- TransportConfiguration>(liveTC1, backupTC1));
-serverList.add(new Pair<TransportConfiguration,
- TransportConfiguration>(liveTC2, backupTC2));
-
-ConnectionFactory jmsConnectionFactory =
ActiveMQJMSClient.createConnectionFactory(serverList);
-
-Connection jmsConnection1 = jmsConnectionFactory.createConnection();
-
-Connection jmsConnection2 =
jmsConnectionFactory.createConnection();</programlisting></para>
- <para>ä¸é¢ç代ç
ä¸æ们å建äºä¸ç»<literal>TransportConfiguration</literal>对象ãæ¯ä¸ª
- <literal>TransportConfiguration</literal>对象å
æ¬äºå¦ä½è¿æ¥æ个ç¹å®æå¡å¨çä¿¡æ¯ã</para>
-
<para>ç¶åï¼ä½¿ç¨è¿ä¸ªæå¡å¨å表å建äºä¸ä¸ª<literal>ActiveMQConnectionFactory</literal>å®ä¾ã
- è¿æ
·éè¿è¿ä¸ªå·¥åå建çè¿æ¥å°±å¯ä»¥ä½¿ç¨è¿ä¸ªå表ï¼ç±æç¨ç客æ·è¿æ¥è´è½½åè¡¡çç¥æ¥è¿è¡è¿æ¥çè´è½½åè¡¡ã</para>
- </section>
- <section>
- <title>使ç¨æ ¸å¿æ¥å£æå®æå¡å¨å表</title>
- <para>å¦æ使ç¨æ ¸å¿æ¥å£ï¼ä½
å¯ä»¥ç´æ¥å¨<literal>ClientSessionFactory</literal>å®ä¾ä¸è®¾ç½®æå¡å¨å表ã
- å¦ä¸ä¾ï¼</para>
- <programlisting>List<Pair<TransportConfiguration,
TransportConfiguration>> serverList =
- new ArrayList<Pair<TransportConfiguration,
TransportConfiguration>>();
-
-serverList.add(new Pair<TransportConfiguration,
- TransportConfiguration>(liveTC0, backupTC0));
-serverList.add(new Pair<TransportConfiguration,
- TransportConfiguration>(liveTC1, backupTC1));
-serverList.add(new Pair<TransportConfiguration,
- TransportConfiguration>(liveTC2, backupTC2));
-
-ClientSessionFactory factory =
ActiveMQClient.createClientSessionFactory(serverList);
-
-ClientSession sesison1 = factory.createClientSession(...);
-
-ClientSession session2 = factory.createClientSession(...);</programlisting>
- <para>å¨ä¸é¢ç代ç
ä¸æ们å建äºä¸ç»<literal>ClientSessionFactoryImpl</literal>对象ãæ¯ä¸ª
- <literal>TransportConfiguration</literal>对象å
æ¬äºå¦ä½è¿æ¥æ个ç¹å®æå¡å¨çä¿¡æ¯ã
- æå
³ä¿¡æ¯è¯·åè§<xref
linkend="configuring-transports" />ã</para>
-
<para>ç¶åï¼ä½¿ç¨è¿ä¸ªæå¡å¨å表å建äºä¸ä¸ª<literal>ActiveMQConnectionFactory</literal>å®ä¾ã
- è¿æ
·éè¿è¿ä¸ªå·¥åå建çä¼è¯å°±å¯ä»¥ä½¿ç¨è¿ä¸ªå表ï¼ç±æç¨ç客æ·è¿æ¥è´è½½åè¡¡çç¥æ¥è¿è¡è¿æ¥çè´è½½åè¡¡ã</para>
- </section>
- </section>
- <section id="clusters.static.servers">
- <title>æå®æå¡å¨å表以ç»æé群</title>
- <para>ä¸é¢æ们èèä¸ä¸ªå¯¹ç§°é群çä¾åï¼æ们é
ç½®äºæ¯ä¸ªé群è¿æ¥ï¼ä½æ¯ä¸ä½¿ç¨åç°åè½æ¥è·å¾æå¡å¨ä¿¡æ¯ãæ们
- éç¨é
ç½®çæ¹æ³æ¥æ¾å¼æå®é群çæææåã</para>
- <para>ä¸é¢å°±æ¯ä¸ä¸ªé群è¿æ¥çé
ç½®ï¼</para>
- <programlisting><cluster-connections>
- <cluster-connection name="my-explicit-cluster">
- <address>jms</address>
- <connector-ref connector-name="my-connector1"
- backup-connector-name="my-backup-connector1"/>
- <connector-ref connector-name="my-connector2"
- backup-connector-name="my-backup-connector2"/>
- <connector-ref connector-name="my-connector3"
- backup-connector-name="my-backup-connector3"/>
- </cluster-connection>
-</cluster-connections></programlisting>
- <para><literal>cluster-connection</literal>ä¸å¯ä»¥å
æ¬é¶æå¤ä¸ª<literal>connector-ref</literal>,
-
æ¯ä¸ª<literal>connector-ref</literal>é½æä¸ä¸ª<literal>connector-name</literal>å±æ§å
-
ä¸ä¸ªå¯éç<literal>backup-connector-name</literal>å±æ§ã<literal
- >connector-name</literal>å±æ§æåä¸ä¸ªå¨<literal
-
>activemq-configuration.xml</literal>æ件ä¸å®ä¹çä¸ä¸ªè¿æ¥å¨ï¼å®æ¯ä¸»è¿æ¥å¨ãå¯éç
- <literal>backup-connector-name</literal>æåçä¹æ¯å¨
-
<literal>activemq-configuration.xml</literal>æ件ä¸å®ä¹çä¸ä¸ªè¿æ¥å¨ã
- æå
³è¿æ¥å¨ç详ç»ä¿¡æ¯åè§<xref
linkend="configuring-transports" />ã</para>
- <note>
- <para>ç±äºActiveMQ
2.0.0çéå¶ï¼ä½¿ç¨éæèç¹å表çé群ä¸æ¯æ失æå¤æ´ï¼failoverï¼ãè¦æ³æ¯æ失æå¤æ´ï¼
- å°±å¿
须使ç¨åç°ç»ã</para>
- </note>
- </section>
- </section>
- <section id="clusters.message-redistribution">
- <title>æ¶æ¯ååé
</title>
- <para>é群çå¦ä¸ä¸ªéè¦åè½æ¯æ¶æ¯çååé
ãåé¢æ们ç¥éå¨æå¡å¨ç«¯å¯ä»¥å¯¹æ¶æ¯å¤§é群èç¹é´è¿è¡è½®æµæ¹å¼çè´è½½åè¡¡ãå¦æ
-
<literal>forward-when-no-consumers</literal>åæ°ä¸ºfalseï¼æ¶æ¯å°ä¸ä¼è½¬åå°é£äºæ²¡æç¸åºæ¥æ¶è
çèç¹ä¸ã
- è¿æ ·å¯ä»¥ææé¿å
äºæ¶æ¯è¢«éå°ä¸ä¸ªä¸å¯è½è¢«æ¥æ¶çèç¹ä¸ãä½ä»ç¶æä¸ä¸ªé®é¢æ
æ³è§£å³ï¼å°±æ¯å¦æå¨æ¶æ¯åå°ä¸ä¸ªèç¹åï¼
- å®çæ¥æ¶è
被å
³éï¼é£ä¹è¿äºæ¶æ¯ä»ç¶ä¸è½è¢«æ¥æ¶äºï¼é
æäºä¸ç§æ¶æ¯<emphasis>å®ä¹</emphasis>æ
å½¢ã
- è¿ç§æ
åµä¸å¦ä½å¤çï¼</para>
- <para>è¿éå°±éè¦æ¶æ¯ååé
åè½ãéè¿é
ç½®ï¼ActiveMQå¯ä»¥å°æ²¡ææ¥æ¶è
çéåä¸çæ¶æ¯<emphasis>å次åé
</emphasis>
- å°ææ¥æ¶è
çèç¹ä¸å»ã</para>
- <para>éè¿é
ç½®ï¼æ¶æ¯å¯ä»¥å¨éåæåä¸ä¸ªæ¥æ¶è
å
³éæ¶ç«å³è¿è¡ï¼ä¹å¯ä»¥é
ç½®æçå¾
ä¸æ®µæ¶é´åè¿è¡ãé»è®¤æ¶æ¯ååé
åè½æ¯
- å
³éçã</para>
- <para>æ¶æ¯ååé
åè½å¯ä»¥åºäºå°åè¿è¡é
ç½®ï¼å³å¨å°å设置ä¸æå®ååé
ç延æ¶ãå
³äºå°å设置çæ´å¤ä¿¡æ¯ï¼è¯·åè§
- <xref linkend="queue-attributes" />ã</para>
-
<para>ä¸é¢æ¯ä»<literal>activemq-configuration.xml</literal>æ件ä¸æåçæ¶æ¯ååé
çé
ç½®ï¼</para>
- <programlisting><address-settings>
- <address-setting match="jms.#">
- <redistribution-delay>0</redistribution-delay>
- </address-setting>
- </address-settings></programlisting>
- <para>ä¸é¢<literal>address-settings</literal>ä¸è®¾ç½®ç<literal
-
>redistribution-delay</literal>å¼ä¸º<literal>0</literal>ãå®éç¨äºææ以âjmsâå¼å¤´ç
- å°åãç±äºææJMSéåä¸è¯é¢è®¢é
é½ç»å®å°ä»¥âjmsâ为å¼å¤´çå°åï¼æ以ä¸è¿°é
ç½®çç«å³æ¹å¼ï¼æ²¡æ延è¿ï¼æ¶æ¯
- ååé
éç¨äºææçJMSéååè¯é¢è®¢é
ã</para>
- <para><literal>match</literal>å±æ§å¯ä»¥æ¯ç²¾ç¡®å¹é
ï¼ä¹å¯ä»¥ä½¿ç¨éé
符ãéé
符è¦ç¬¦åActiveMQçéé
符
- è¯æ³ï¼å¨<xref linkend="wildcard-syntax"
- />ä¸æè¿°ï¼ã</para>
-
<para><literal>redistribution-delay</literal>å®ä¹äºéåæåä¸ä¸ªæ¥æ¶è
å
³éåå¨è¿è¡æ¶æ¯ååé
åæçå¾
ç
- æ¶é´ï¼åä½æ¯«ç§ãå¦æå
¶å¼æ¯0ï¼è¡¨ç¤ºç«å³è¿è¡æ¶æ¯ååé
ã<literal>-1</literal>表示ä¸ä¼è¿è¡æ¶æ¯ååé
ã
- é»è®¤å¼æ¯<literal>-1</literal>ã</para>
- <para>é常为æ¶æ¯åé
å®ä¹ä¸ä¸ªå»¶è¿æ¯æå®é
æä¹çãå¾å¤æ¶åå½ä¸ä¸ªæ¥æ¶è
被å
³éæ¶ï¼å¾å¿«å°±ä¼æä¸ä¸ªæ°çæ¥æ¶è
被å建ã
- å¨è¿ç§æ
åµä¸å
ä¸å»¶è¿å¯ä»¥ä½¿æ¶æ¯ç»§ç»å¨æ¬å°è¿è¡æ¥æ¶ï¼èä¸ä¼å°æ¶æ¯è½¬åå°å«å¤ã</para>
- </section>
- <section>
- <title>é群ææç»æ</title>
-
<para>ActiveMQé群å¯ä»¥æå¤ç§ææç»æãæ们æ¥ç两个æ常è§çç»æã</para>
- <section id="symmetric-cluster">
- <title>对称å¼é群</title>
-
<para>对称å¼é群å¯è½æ¯æ常è§çé群æ¹å¼äºãå¦æä½
æ¥è§¦è¿JBossåºç¨æå¡å¨çé群ï¼ä½
就对è¿ç§æ¹å¼å¾çæã</para>
- <para>å¨ä¸ä¸ªå¯¹ç§°é群ä¸ï¼æ¯ä¸ä¸ªèç¹é½ä¸é群ä¸å
¶å®ä»»ä¸èç¹ç¸è¿ãæ¢å¥è¯è¯´ï¼é群ä¸ä»»æ两个èç¹çè¿æ¥é½
- åªæä¸è·³ï¼hopï¼ã</para>
-
<para>è¦ç»æä¸ä¸ªå¯¹ç§°å¼çé群ï¼æ¯ä¸ªèç¹å¨å®ä¹é群è¿æ¥æ¶è¦å°å±æ§<literal>max-hops</literal>
-
设为<literal>1</literal>ãé常é群è¿æ¥å°ä½¿ç¨æå¡å¨åç°çåè½æ¥è·å¾é群ä¸å
¶å®æå¡å¨çè¿æ¥
-
ä¿¡æ¯ãå½ç¶å¨UDPä¸å¯ç¨çæ¶åï¼ä¹å¯ä»¥éè¿æ¾å¼æ¹å¼ä¸ºé群è¿æ¥æå®æå¡å¨ã</para>
- <para>å¨å¯¹ç§°é群ä¸ï¼æ¯ä¸ªæå¡å¨é½ç¥éé群ä¸å
¶å®æå¡å¨ä¸çææéåä¿¡æ¯ï¼ä»¥åå®ä»¬çæ¥æ¶è
ä¿¡æ¯ãå©ç¨è¿äº
-
ä¿¡æ¯å®å¯ä»¥å³å®å¦ä½è¿è¡æ¶æ¯çè´è½½åè¡¡åæ¶æ¯ååé
ã</para>
- </section>
- <section>
- <title>é¾å¼é群</title>
- <para>å¨é¾å¼é群ä¸ï¼å¹¶ä¸æ¯æ¯ä¸ªèç¹é½ä¸å
¶å®ä»»ä½èç¹ç´æ¥ç¸è¿ï¼èæ¯ç±ä¸¤ä¸ªèç¹ç»æ头åå°¾ï¼å
¶ä½èç¹å¨ä¸é´è¿æ¥
- æ为ä¸ä¸ªé¾çç»æã</para>
-
<para>æ¯å¦æä¸ä¸ªèç¹AãBåCãèç¹Aå¨ä¸ä¸ªç½ç»ä¸ï¼å®æ许å¤æ¶æ¯çåéè
åå®åé订åæ¶æ¯ãç±äºå
¬å¸çæ¿çï¼è®¢å
- çæ¥æ¶è
éè¦å¨å¦ä¸ä¸ªç½ç»ä¸æ¥æ¶æ¶æ¯ï¼å¹¶ä¸è¿ä¸ªç½ç»éè¦ç»è¿å
¶å®ç¬¬ä¸ä¸ªç½ç»æå¯ä»¥è®¿é®ãè¿ç§æ
åµä¸æ们å°èç¹
-
Bé¨ç½²å°ç¬¬ä¸ä¸ªç½ç»ä¸ï¼ä½ä¸ºèç¹Aä¸èç¹Cçä¸é´èç¹å°ä¸¤ä¸ªèç¹è¿æ¥èµ·æ¥ãå½æ¶æ¯å°è¾¾èç¹Aæ¶ï¼è¢«è½¬åå°èç¹Bï¼
- ç¶åå被转åå°èç¹Cä¸ï¼è¿æ
·æ¶æ¯å°±è¢«Cä¸çæ¥æ¶è
ææ¥æ¶ãèç¹Aä¸éè¦ç´æ¥ä¸èç¹Cè¿æ¥ï¼ä½æ¯ææä¸ä¸ªèç¹ä»ç¶
- ç»æäºä¸ä¸ªé群ã</para>
- <para>è¦æ³ç»æä¸ä¸ªè¿æ
·çé群ï¼èç¹Açé群è¿æ¥è¦æåèç¹Bï¼èç¹Bçé群è¿æ¥è¦æåCãæ¬ä¾æ们åªæ³ç»æä¸ä¸ªåå
-
çé¾å¼é群ï¼å³æ们åªå°æ¶æ¯æèç¹A->B->Cçæ¹åæµå¨ï¼èä¸è¦å
C->B->Aæ¹åæµå¨ã</para>
-
<para>对äºè¿ç§é群ææï¼æ们éè¦å°<literal>max-hops</literal>设为<literal
- >2</literal>. è¿ä¸ªå¼å¯ä»¥ä½¿èç¹Cä¸éåçä¿¡æ¯ä¼
éå°èç¹Bï¼åä¼ éå°èç¹Aãå
æ¤èç¹Aå°±ç¥éæ¶æ¯å°è¾¾æ¶å³å°
- å
¶è½¬åç»èç¹Bã尽管èç¹Bå¯è½æ²¡ææ¥æ¶è
ï¼å¯å®ç¥éåç»è¿ä¸è·³å°±å¯ä»¥å°æ¶æ¯è½¬å°èç¹Cï¼é£éå°±ææ¥æ¶è
äºã</para>
- </section>
- </section>
-</chapter>