http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/management.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/management.xml b/docs/user-manual/zh/management.xml new file mode 100644 index 0000000..21a3587 --- /dev/null +++ b/docs/user-manual/zh/management.xml @@ -0,0 +1,805 @@ +<?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="management"> + <title>管ç</title> + <para>HornetQæ¥æå¥ä¸°å¯ç管çæ¥å£ãç¨æ·ä½¿ç¨è¿äºæ¥å£å¯ä»¥ä¿®æ¹æå¡å¨é ç½®ãå建æ°çèµæºï¼å¦éåå + è¯é¢ï¼ãæ£æ¥è¿äºèµæºï¼å¦éåä¸æå¤å°æ¶æ¯ï¼å¹¶è¿è¡ç®¡çï¼ä»éåä¸å é¤æ¶æ¯ï¼ãè¿æ ·ç¨æ·å¯ä»¥ + <emphasis>管ç</emphasis>HornetQãå¦å¤ï¼å®¢æ·è¿å¯ä»¥è®¢é 管çéç¥ã</para> + <para>æä¸ç§æ¹å¼ç®¡çHornetQï¼</para> + <itemizedlist> + <listitem> + <para>使ç¨JMX -- JMXæ¯æ åçJavaåºç¨ç¨åºç®¡çæ¹å¼ã</para> + </listitem> + <listitem> + <para>使ç¨æ ¸å¿æ¥å£ -- 管çæä½éè¿<emphasis>æ ¸å¿æ¶æ¯</emphasis>çæ¹æ³ååHornetQæ + å¡ã</para> + </listitem> + <listitem> + <para>使ç¨JMSæ¥å£ -- 管çæä½éè¿<emphasis>JMSæ¶æ¯</emphasis>çæ¹å¼ååHornetQæå¡å¨ã</para> + </listitem> + </itemizedlist> + <para>è½ç¶æä¸ç§æ¹å¼ï¼ä½å®ä»¬æä¾ç¸åçåè½ã使ç¨JMXæ¹æ³è½å®æçåè½ä½¿ç¨æ ¸å¿æ¥å£æJMSæ¥å£é½å¯ä»¥å®æã</para> + <para>æ ¹æ®ä¸åçåºç¨ç¯å¢æ¥éæ©æéå½çæ¹å¼ã</para> + <section> + <title>管çæ¥å£API</title> + <para>ä¸ç®¡ä½¿ç¨åªç§æ¹å¼ï¼ç®¡çæ¥å£é½æ¯ä¸æ ·çã</para> + <para>对äºæ¯ä¸ª<emphasis>被管ççèµæº</emphasis>é½æä¸ä¸ªJavaçæ¥å£æä¾å¯ä½¿ç¨çæä½ã</para> + <para>HornetQç管çæ¥å£åå¸å¨2个å ä¸ï¼</para> + <itemizedlist> + <listitem> + <para><emphasis>æ ¸å¿</emphasis>èµæºç管çæ¥å£å¨ <literal + >org.hornetq.api.core.management</literal>å ä¸ã</para> + </listitem> + <listitem> + <para><emphasis>JMS</emphasis>èµæºç管çæ¥å£å¨ <literal + >org.hornetq.api.jms.management</literal>å ä¸ã</para> + </listitem> + </itemizedlist> + <para>è°ç¨<emphasis>管çæä½</emphasis>çæ¹æ³ç±æ使ç¨æ¯æ¹å¼æ¯JMXãæ ¸å¿æ¶æ¯è¿æ¯JMS + æ¶æ¯æ¥å³å®ã</para> + <note> + <para>ä¸å°é¨åç管çæ¥å£éè¦ä¸ä¸ª<literal>è¿æ»¤å¨</literal>åæ°æ¥éæ©éè¦çæ¶æ¯ã + å¦æè¦æ±<emphasis>ææçæ¶æ¯</emphasis>ï¼ä¼ é该åæ°æ¶ä½¿ç¨<literal> + null</literal>æè ä¸ä¸ªç©ºçå符串å³å¯ã</para> + </note> + <section> + <title>æ ¸å¿ç®¡çæ¥å£</title> + <para>HornetQå®ä¹äºä¸å¥å¯¹æ ¸å¿èµæºç管çæ¥å£ãå ³äºå®ä»¬ç详ç»è¯´æ请åè§ç¸åºçjavadocã + ä¸é¢æ¯å¯¹å®ä»¬çæ¦è¿°ï¼</para> + <section> + <title>æ ¸å¿æå¡å¨ç®¡ç</title> + <itemizedlist> + <listitem> + <para>éåçå表ãå建ãé¨ç½²ä¸å é¤</para> + <para><literal>getQueueNames()</literal> methodæ¹æ³ç¨æ¥ååºææå·²ç»é¨ç½²çéåã</para> + <para>å¨<literal>HornetQServerControl</literal> ï¼ObjectName <literal + >org.hornetq:module=Core,type=Server</literal>æèµæºå<literal + >core.server</literal>ï¼ä¸æéåå建æå é¤çæ¹æ³ï¼å®ä»¬æ¯ + <literal>createQueue()</literal>ã<literal>deployQueue()</literal>å + <literal>destroyQueue()</literal>ã</para> + <para>å¦æéåå·²ç»åå¨ï¼é£ä¹<literal>createQueue</literal>æ¹æ³è°ç¨ä¼åºéï¼è + <literal>deployQueue</literal>æ¹æ³è°ç¨æ²¡æä»»ä½ä½ç¨ã</para> + </listitem> + <listitem> + <para>æåä¸æ¢å¤éå</para> + <para><literal>QueueControl</literal>å¯ç¨æ¥æåä¸æ¢å¤éåãå¦æä¸ä¸ªéå被æåï¼å® + è½ç¶å¯ä»¥ç»§ç»æ¥æ¶æ¶æ¯ä½æ¯ä¸ä¼ éæ¶æ¯ï¼å½è¢«æ¢å¤æ¶ï¼éååä¼å¼å§ä¼ éæ¶æ¯ã + </para> + </listitem> + <listitem> + <para>è¿ç¨è¿æ¥çå表ä¸å ³é</para> + <para><literal>listRemoteAddresses()</literal>æ¹æ³å¯ä»¥ç¨æ¥ååºå®¢æ·ç«¯çè¿ç¨å°åã + è¿å¯ä»¥ä½¿ç¨<literal>closeConnectionsForAddress()</literal>æ¹æ³æ¥å ³é + ä¸è¯¥å°åç¸å ³çè¿ç¨è¿æ¥ã</para> + <para>å¦å¤ï¼ä½¿ç¨<literal>listConnectionIDs()</literal>æ¹æ³å¯ä»¥ååºè¿æ¥IDï¼ + 使ç¨<literal>listSessions()</literal>æ¹æ³å¯ä»¥ååºä¸ä¸ä¸ªè¿æ¥IDç¸å ³çææ + ä¼è¯ï¼sessionï¼ã</para> + </listitem> + <listitem> + <para>äºå¡çæå¨æä½ï¼heuristic operationsï¼</para> + <para>å½æå¡å¨ç±äºæ éèéæ°å¯å¨æ¶ï¼å¯è½é æä¸äºäºå¡æ²¡æå®æèéè¦äººå·¥å¹²é¢ã + <literal>listPreparedTransactions()</literal>æ¹æ³å¯ä»¥ååºææå¤äº + åå¤ï¼preparedï¼ç¶æçäºå¡ï¼äºå¡æ¯ç¨Base64å符串çå½¢å¼ååºï¼ãå¦æè¦æ交æåæ»ï¼ + å¯ä»¥ä½¿ç¨<literal>commitPreparedTransaction()</literal>æ¹æ³æ + <literal>rollbackPreparedTransaction()</literal>æ¹æ³ãéç¨å¯åå¼ + ï¼heuristicï¼å®æçäºå¡å¯ä»¥ç¨<literal>listHeuristicCommittedTransactions()</literal> + æ¹æ³å<literal>listHeuristicRolledBackTransactions</literal>æ¹æ³ååºã</para> + </listitem> + <listitem> + <para>æå¼åéç½®æ¶æ¯è®¡æ°å¨</para> + <para>æ¶æ¯è®¡æ°å¨å¯ä»¥ç¨<literal>enableMessageCounters()</literal>æ¹æ³æå¼ï¼ç¨ + <literal>disableMessageCounters()</literal>æ¹æ³å ³éãå¦æè¦éç½®æ¶æ¯è®¡æ°å¨ï¼ + å¯ä»¥ä½¿ç¨<literal>resetAllMessageCounters()</literal>æ¹æ³å + <literal>resetAllMessageCounterHistories()</literal>æ¹æ³ã</para> + </listitem> + <listitem> + <para>è·å¾æå¡å¨çé ç½®åå±æ§</para> + <para><literal>HornetQServerControl</literal>æä¾äºè®¿é®HornetQæå¡å¨ææå±æ§ + çæ¹æ³ï¼ä¾å¦<literal>getVersion()</literal>æ¹æ³å¯ä»¥å¾å°æå¡å¨ççæ¬ï¼ççï¼ã </para> + </listitem> + <listitem> + <para>æ ¸å¿æ¡¥å转åå¨çå建ï¼å é¤ä¸å表</para> + <para>使ç¨<literal>getBridgeNames()</literal>å¯ä»¥ååºé¨ç½²çæ ¸å¿æ¡¥ã + 使ç¨<literal>getDivertNames()</literal>å¯ä»¥ååºé¨ç½²ç转åå¨ã</para> + <para>使ç¨<literal>HornetQServerControl</literal> (ObjectName <literal + >org.hornetq:module=Core,type=Server</literal> æèµæºå <literal + >core.server</literal>)çæ¹æ³<literal>createBridge()</literal> +ããããããããããããã å<literal>destroyBridge()</literal>å¯ä»¥å建åå é¤æ ¸å¿æ¡¥ã + éè¿<literal>createDivert()</literal>å<literal>destroyDivert()</literal> + å¯ä»¥å建åå é¤è½¬åå¨ã</para> + </listitem> + </itemizedlist> + </section> + <section> + <title>æ ¸å¿å°åç管ç</title> + <para>æ ¸å¿å°åå¯ä»¥éè¿<literal>AddressControl</literal>ç±»è¿è¡è®¿é®ï¼ObjectName + æ¯ <literal>org.hornetq:module=Core,type=Address,name="<the + address name>"</literal>æè èµæºå <literal>core.address.<the + address name></literal>ï¼ã</para> + <itemizedlist> + <listitem> + <para>ä¿®æ¹å°åçè§è²åæéã</para> + <para>ä½ å¯ä»¥ä½¿ç¨<literal>addRole()</literal>æ¹æ³æ<literal>removeRole()</literal> + æ¹æ³æ·»å æå é¤å°åçè§è²ãç¨<literal>getRoles()</literal>æ¹æ³å¯ä»¥ååºä¸ä¸ªå°åçææè§è²ã</para> + </listitem> + </itemizedlist> + </section> + <section> + <title>æ ¸å¿éåç管ç</title> + <para>管çæ¥å£ä¸çä¸å¤§é¨åæ¯ç®¡çæ ¸å¿éåçã<literal>QueueControl</literal>ç±»å®ä¹äºæ ¸å¿éåç管ç + æ¥å£ï¼ObjectName <literal>org.hornetq:module=Core,type=Queue,address="<ç»å®å°å + address>",name="<éåå>"</literal> æèµæºå <literal + >core.queue.<éåå></literal>ï¼ã</para> + <para>ç»å¤§é¨åçéå管çæ¹æ³éè¦ä¸ä¸ªæ¶æ¯IDåæ°ï¼å¦å é¤ä¸ä¸ªæ¶æ¯ï¼æä¸ä¸ªè¿æ»¤å¨åæ°ï¼å¦å°å ·ææ个 + å±æ§å¼çæææ¶æ¯è®¾ç½®ä¸ºè¿æï¼ã</para> + <itemizedlist> + <listitem> + <para>æ¶æ¯çè¿æï¼ååæ»ä¿¡å°ååå é¤</para> + <para><literal>expireMessages()</literal>æ¹æ³å¯ä»¥ä½¿æ¶æ¯è¿æãå¦æ设置äºä¸ä¸ªè¿æå°åï¼ + è¿äºæ¶æ¯ä¼è¢«åå°è¿æå°åãå¦åè¿äºæ¶æ¯ä¼è¢«ä¸¢å¼ã<literal>setExpiryAddress()</literal> + æ¹æ³å¯ä»¥ç¨æ¥è®¾ç½®éåçè¿æå°åã</para> + <para>æ¶æ¯å¯ä»¥ç¨<literal>sendMessagesToDeadLetterAddress()</literal>æ¹æ³åéå° + ä¸ä¸ªæ»ä¿¡å°åãå®è¿ååå°è¿ä¸ªæ»ä¿¡å°åçæ¶æ¯çæ°éãå¦æ没æ设置æ»ä¿¡å°åï¼é£ä¹æ¶æ¯å°±ä¼ä»éåä¸ + å é¤ãç¨<literal>setDeadLetterAddress()</literal>æ¹æ³å¯ä»¥è®¾ç½®éåçæ»ä¿¡å°åã</para> + <para>æ¶æ¯è¿å¯ä»¥ä»ä¸ä¸ªéå转移å°å¦ä¸ä¸ªéåãå ¶æ¹æ³æ¯ + <literal>moveMessages()</literal>ã</para> + </listitem> + <listitem> + <para>æ¶æ¯çå表ä¸å é¤</para> + <para>ç¨<literal>listMessages()</literal>æ¹æ³å¯ä»¥ååºä¸ä¸ªéåä¸çæææ¶æ¯ãè¿ä¸ªæ¹æ³ + è¿åçæ¯ä¸ä¸ª<literal>Map</literal>çæ°ç»ãæ¯ä¸ä¸ªMap对åºä¸ä¸ªæ¶æ¯ã</para> + <para>æ¶æ¯å¯ä»¥ç¨<literal>removeMessages()</literal>æ¹æ³å é¤ãå¦ææ¯ä½¿ç¨æ¶æ¯IDï¼ + è¿åçæ¯ä¸ä¸ªå¸å°å¸¸éï¼å¦ææ¯ç¨è¿æ»¤å¨ï¼åè¿åç + æ¯å é¤çæ¶æ¯æ°éãå¨ä½¿ç¨è¿æ»¤å¨æ¥å é¤è¿æ»¤çæ¶æ¯æ¶ï¼å¦æä¼ å ¥ä¸ä¸ªç©ºå符串å表示è¦å é¤ + ææçæ¶æ¯ã</para> + </listitem> + <listitem> + <para>æ¶æ¯è®¡æ°</para> + <para>ä¸ä¸ªéåä¸çæ¶æ¯æ°å¯ä»¥ç¨<literal>getMessageCount()</literal>æ¹æ³è·å¾ã + æ¤å¤ï¼<literal>countMessages()</literal>æ¹æ³å¯ä»¥è¿åéåä¸ä¸ä¸ + 个<emphasis>è¿æ»¤å¨</emphasis>å¹é çæ¶æ¯æ°éã</para> + </listitem> + <listitem> + <para>ä¿®æ¹æ¶æ¯çä¼å 级</para> + <para>ç¨<literal>changeMessagesPriority()</literal>æ¹æ³å¯ä»¥æ¹åæ¶æ¯çä¼å 级ã + 该æ¹æ³å¦æ带ä¸ä¸ªæ¶æ¯IDåæ°ï¼è¿åä¸ä¸ªå¸å°å¸¸éï¼å¦æ带ä¸ä¸ªè¿æ»¤å¨åæ°ï¼è¿åä¼å 级 + 被æ´æ°çæ¶æ¯çæ°éã</para> + </listitem> + <listitem> + <para>æ¶æ¯è®¡æ°å¨</para> + <para>ç¨<literal>listMessageCounter()</literal>æ¹æ³å<literal> + listMessageCounterHistory()</literal>æ¹æ³å¯ä»¥ååºä¸ä¸ªéåçæ¶æ¯è®¡æ°å¨ã + ï¼åè§ <xref linkend="management.message-counters"/>ï¼ãæ¶æ¯è®¡æ°å¨è¿å¯ä»¥ + ç¨<literal>resetMessageCounter()</literal>æ¹æ³éç½®ã</para> + </listitem> + <listitem> + <para>è·å¾éåçå±æ§</para> + <para>éè¿<literal>QueueControl</literal>å¯ä»¥è·å¾æ ¸å¿éåçå±æ§ï¼ä¾å¦ç¨ + <literal>getFilter()</literal>æ¹æ³å¯ä»¥å¾å°éåç + è¿æ»¤å¨ï¼<literal>isDurable()</literal>æ¹æ³å¯ä»¥ç¥ééåæ¯å¦æ¯æä¹ çéåççï¼ã</para> + </listitem> + <listitem> + <para>æååæ¢å¤éå</para> + <para><literal>QueueControl</literal>å¯ç¨æ¥æåä¸æ¢å¤éåãå¦æä¸ä¸ªéå被æåï¼å® + è½ç¶å¯ä»¥ç»§ç»æ¥æ¶æ¶æ¯ä½æ¯ä¸ä¼ éæ¶æ¯ï¼å½è¢«æ¢å¤æ¶ï¼éååä¼å¼å§ä¼ éæ¶æ¯ã</para> + </listitem> + </itemizedlist> + </section> + <section> + <title>å ¶å®æ ¸å¿èµæºç管ç</title> + <para>HornetQå 许ç¨æ·å¯å¨æåæ¢å ¶è¿ç¨èµæºï¼æ¥æ¶å¨ï¼è½¬åå¨ï¼æ¡¥ï¼ççï¼ãè¿æ ·å¯ä»¥ä½¿æå¡å¨æåå·¥ä½ + èä¸éè¦å®å ¨åæ¢æå¡å¨ï¼æ¯å¦å¯ä»¥ä¸´æ¶å¯¹æå¡å¨è¿è¡ä¸äºç¦»çº¿æä½ï¼å对ä¸äºäºå¡çå¤çï¼ãè¿äºèµæºæï¼</para> + <itemizedlist> + <listitem> + <para>æ¥æ¶å¨</para> + <para>ç¨<literal>AcceptorControl</literal>ç±»ï¼ObjectName <literal + >org.hornetq:module=Core,type=Acceptor,name="<æ¥æ¶å¨å + >"</literal> æèµæºå <literal>core.acceptor.<å°åå + ></literal>ï¼ç<literal>start()</literal>æ¹æ³å¯å¨ï¼ç¨<literal> + stop()</literal>æ¹æ³åæ¢ãæ¥æ¶å¨çåæ°å¯ä»¥éè¿<literal>AcceptorControl</literal> + çå±æ§è·å¾ãï¼åè§ <xref + linkend="configuring-transports.acceptors"/>ï¼ã</para> + </listitem> + <listitem> + <para>转åå¨</para> + <para>ç¨<literal>DivertControl</literal>ï¼ObjectNameæ¯ <literal + >org.hornetq:module=Core,type=Divert,name=<转åå¨å></literal> + æèµæºå<literal>core.divert.<转åå¨></literal>ï¼ç±»ç + <literal>start()</literal>æ¹æ³å¯ä»¥å¯å¨ï¼ç¨<literal>stop()</literal>æ¹æ³å¯ä»¥åæ¢ã + éè¿<literal>DivertControl</literal>è¿å¯ä»¥è·å¾è½¬åå¨çåç§å±æ§ãï¼åè§ <xref + linkend="diverts"/>ï¼ã</para> + </listitem> + <listitem> + <para>æ¡¥</para> + <para>æ¡¥å¯ä»¥éè¿<literal>BridgeControl</literal>ç±»ï¼ObjectName <literal + >org.hornetq:module=Core,type=Bridge,name="<æ¡¥çåå + >"</literal> æèµæºå <literal>core.bridge.<æ¡¥çåå + ></literal>ï¼ç<literal>start()</literal> + æ¹æ³å¯å¨ï¼ç¨<literal>stop()</literal>æ¹æ³åæ¢ãå®çå±æ§å¯ä»¥éè¿ + <literal>BridgeControl</literal>çå±æ§è·å¾ï¼åè§ + <xref linkend="core-bridges"/>ï¼ã</para> + </listitem> + <listitem> + <para>广æç»</para> + <para>广æç»å¯ä»¥éè¿<literal>BroadcastGroupControl</literal>ç±»ï¼ObjectName <literal + >org.hornetq:module=Core,type=BroadcastGroup,name="<广æç»å + >"</literal> æè èµæºå <literal + >core.broadcastgroup.<广æç»å></literal>)ç<literal> + start()</literal>æ¹æ³å¯å¨ï¼ç¨<literal>stop()</literal>æ¹æ³åæ¢ã + å®çå±æ§ä¹å¯ä»¥éè¿<literal + >BroadcastGroupControl</literal>çå±æ§è·å¾ï¼åè§<xref + linkend="clusters.broadcast-groups"/>ï¼ã</para> + </listitem> + <listitem> + <para>åç°ç»</para> + <para>åç°ç»å¯ä»¥éè¿<literal>DiscoveryGroupControl</literal>ç±» + ï¼ObjectName <literal>org.hornetq:module=Core,type=DiscoveryGroup, + name="<åç°ç»å>"</literal> æèµæºå<literal>core.discovery.< + åç°ç»å></literal>ï¼ç + <literal>start()</literal>æ¹æ³å¯å¨ï¼ç¨<literal>stop()</literal>æ¹æ³åæ¢ã + å®çåæ°å¯ä»¥éè¿<literal>DiscoveryGroupControl</literal>çå±æ§è·å¾ï¼åè§ + <xref linkend="clusters.discovery-groups"/>ï¼ã</para> + </listitem> + <listitem> + <para>é群è¿æ¥</para> + <para>é群è¿æ¥å¯ä»¥éè¿<literal>ClusterConnectionControl</literal>ç±»ï¼ + ObjectName <literal + >org.hornetq:module=Core,type=ClusterConnection,name="<é群è¿æ¥å + >"</literal> æèµæºå <literal + >core.clusterconnection.<é群è¿æ¥å></literal>ï¼ç<literal> + start()</literal>æ¹æ³å¯å¨ï¼ç¨<literal>stop()</literal>æ¹æ³åæ¢ã + å®çåæ°å¯ä»¥éè¿<literal + >ClusterConnectionControl</literal>çå±æ§æ¥è·å¾ï¼åè§ + <xref linkend="clusters.cluster-connections"/>ï¼ã</para> + </listitem> + </itemizedlist> + </section> + </section> + <section> + <title>JMS管çæ¥å£</title> + <para>HornetQå®ä¹äºä¸å¥JMS管çæ¥å£æ¥ç®¡çJMSç<emphasis>å¯ç®¡çç对象</emphasis> + ï¼ä¾å¦JMSéåï¼è¯é¢åè¿æ¥å·¥åï¼ã</para> + <section> + <title>JMSæå¡å¨ç®¡ç</title> + <para><literal>JMSServerControl</literal>ç±»ï¼ObjectName <literal + >org.hornetq:module=JMS,type=Server</literal> æèµæºå<literal + >jms.server</literal>ï¼ç¨æ¥å建JMSèµæºï¼è¿æ¥å·¥ååç®æ ï¼ã</para> + <itemizedlist> + <listitem> + <para>å表ãå建ãå é¤è¿æ¥å·¥å</para> + <para>使ç¨<literal>getConnectionFactoryNames()</literal> æ¹æ³å¯ä»¥ååºé¨ç½²çè¿æ¥å·¥åç + ååã</para> + <para>ç¨<literal>createConnectionFactory()</literal>æ¹æ³å<literal + >destroyConnectionFactory()</literal>æ¹æ³è½å建åå é¤JMSè¿æ¥å·¥åã + è¿äºè¿æ¥å·¥åé½ä¸JNDIç»å®ä»¥ä¾¿äºå®¢æ·ç«¯æ¥æ¥æ¾ãå¦ææ¯å¨å¾å½¢ä»é¢ä¸å建è¿æ¥å·¥åï¼å¨å¹¿æ¬æ¡å è¾å ¥ + æå ³çä¼ è¾åæ°æ¶å¯ä½¿ç¨ä¸ç»ç¨éå·éå¼çé®ï¼å¼å¯¹ï¼ä¾å¦<literal>key1=10, key2="value", key3=false</literal>ï¼ã + å¦æéè¦å®ä¹å¤ä¸ªä¼ è¾ï¼ä½ éè¦å°æ¯ä¸ªä¼ è¾çåæ°å¯¹ç¨å¤§æ¬å·æ¬èµ·æ¥ï¼ä¾å¦<literal>{key=10}, {key=20}</literal>ã + 第ä¸ä¸ª<literal>key</literal>å±äºç¬¬ä¸ä¸ªä¼ è¾é ç½®ï¼ç¬¬äºä¸ª<literal>key</literal>å±äºç¬¬äºä¸ªä¼ è¾é ç½®ã + ï¼æå ³ä¼ è¾çåç§åæ°åè§<xref linkend="configuring-transports"/>ï¼ã</para> + </listitem> + <listitem> + <para>å表ãå建ä¸å é¤éå</para> + <para><literal>getQueueNames()</literal>æ¹æ³å¯ä»¥è·å¾é¨ç½²çJMSéåçååå表ã</para> + <para>JMSéåå¯ä»¥ç¨<literal>createQueue()</literal>æ¹æ³å建ï¼ç¨<literal>destroyQueue()</literal>æ¹æ³å é¤ã + å建çéåé½ç»å®å°JNDI以便JMS客æ·ç«¯å¯ä»¥æ¥æ¾ã</para> + </listitem> + <listitem> + <para>å表ãå建ä¸å é¤è¯é¢ï¼topicï¼</para> + <para><literal>getTopicNames()</literal>æ¹æ³å¯ä»¥è·å¾é¨ç½²çJMSè¯é¢ååã</para> + <para>JMSè¯é¢å¯ä»¥ç¨<literal>createTopic()</literal>æ¹æ³æ¥å建ï¼ç¨<literal>destroyTopic()</literal>æ¹æ³æ¥å é¤ã + å建çè¯é¢é½ç»å®å°JNDI以便客æ·ç«¯æ¥æ¾ã</para> + </listitem> + <listitem> + <para>è¿ç¨è¿æ¥çå表ä¸å ³é</para> + <para>ç¨<literal>listRemoteAddresses()</literal>æ¹æ³å¯ä»¥è·å¾JMS客æ·ç«¯çè¿ç¨å°åã + è¿å¯ä»¥ç¨<literal>closeConnectionsForAddress()</literal>æ¹æ³å ³éä¸æ个è¿ç¨å°åç¸å ³èçè¿æ¥ã</para> + <para>å¦å¤ï¼<literal>listConnectionIDs()</literal>æ¹æ³å¯ä»¥ååºè¿æ¥çIDï¼ + è<literal>listSessions()</literal>æ¹æ³å¯ä»¥ååºä¸ä¸ªç»å®çè¿æ¥IDçææä¼è¯ï¼sessionï¼ã</para> + </listitem> + </itemizedlist> + </section> + <section> + <title>JMSè¿æ¥å·¥åç管ç</title> + <para>使ç¨ç±»ï¼ObjectName <literal>org.hornetq:module=JMS,type=ConnectionFactory, + name="<è¿æ¥å·¥åå>"</literal>æè èµæºå<literal>jms.connectionfactory.< + è¿æ¥å·¥åå></literal>ï¼å¯ä»¥ç®¡çJMSçè¿æ¥å·¥åã</para> + <itemizedlist> + <listitem> + <para>è·å¾è¿æ¥å·¥åçå±æ§</para> + <para><literal>ConnectionFactoryControl</literal>ç±»å¯ä»¥ç¨æ¥è·å¾è¿æ¥å·¥åçå±æ§ï¼ + ä¾å¦<literal>getConsumerWindowSize()</literal>æ¹æ³å¯ä»¥è·å¾æ¥æ¶è æµæ§å¶ççªå£å¤§å°ï¼ + <literal>isBlockOnNonDurableSend()</literal>æ¹æ³å¯ä»¥ç¥éä»è¿ä¸ªè¿æ¥å·¥åå建çåé + è æ¯å¦éç¨é»å¡æ¹å¼åééæä¹ çæ¶æ¯ï¼ççï¼ã</para> + </listitem> + </itemizedlist> + </section> + <section> + <title>JMSéå管ç</title> + <para>使ç¨<literal>JMSQueueControl</literal>ç±»ï¼ObjectName <literal>org.hornetq:module=JMS, + type=Queue,name="<éåå>"</literal>æèµæºå <literal>jms.queue.<éåå + ></literal>å¯ä»¥ç®¡çJMSéåã</para> + <para><emphasis>JMSéåç管çæä½ä¸æ ¸å¿éåç管çååç¸ä¼¼ã</emphasis></para> + <itemizedlist> + <listitem> + <para>è¿æï¼åéå°æ»ä¿¡å°åå移å¨æ¶æ¯</para> + <para>å¯ä»¥ä½¿ç¨<literal>expireMessages()</literal>æ¹æ³å°éåä¸çæ¶æ¯è®¾æè¿ææ¶æ¯ã + å¦æé ç½®æè¿æå°åï¼æ¶æ¯å°±ä¼è¢«åå°è¿æå°åãè¿æå°åå¯ä»¥ç¨ + <literal>setExpiryAddress()</literal>æ¹æ³æ¥è®¾å®ã</para> + <para>使ç¨<literal>sendMessagesToDeadLetterAddress()</literal>æ¹æ³å¯ä»¥å°æ¶æ¯åéå°æ»ä¿¡å°åã + å®è¿ååéå°æ»ä¿¡å°åæ¶æ¯çæ°éãå¦æ没æ设å®æ»ä¿¡å°åï¼é£ä¹æ¶æ¯ä¼è¢«ä¸¢å¼ãä½¿ç¨ + <literal>setDeadLetterAddress()</literal>æ¹æ³å¯ä»¥è®¾å®éåçæ»ä¿¡å°åã</para> + <para><literal>moveMessages()</literal>æ¹æ³å°æ¶æ¯ä»ä¸ä¸ªéå移å¨å°å¦ä¸ä¸ªéåã</para> + </listitem> + <listitem> + <para>å表ä¸å é¤æ¶æ¯</para> + <para>使ç¨<literal>listMessages()</literal>æ¹æ³å¯ä»¥ååºä¸ä¸ªéåä¸çæææ¶æ¯ãå®è¿åçæ¯ä¸ä¸ª + Mapçæ°ç»ãæ¯ä¸ä¸ªMap对åºä¸ä¸ªæ¶æ¯ã</para> + <para>使ç¨<literal>removeMessages()</literal>æ¹æ³å¯ä»¥ä»éåä¸å é¤æ¶æ¯ãå¦æ带çåæ°æ¯æ¶æ¯IDï¼ + è¿åçæ¯ä¸ä¸ªå¸å°å¸¸æ¯ï¼å¦æ带çåæ°æ¯ä¸ä¸ªè¿æ»¤å¨ï¼åè¿åå é¤çæ¶æ¯æ°ã带æè¿æ»¤å¨åæ°ç<literal + >removeMessages()</literal>æ¹æ³åªå é¤è¿æ»¤å¨éæ©çæ¶æ¯ãå¦æäºåæ°æ¯ä¸ä¸ªç©ºå符串ï¼é£ä¹å° + å é¤ææçæ¶æ¯ã</para> + </listitem> + <listitem> + <para>æ¶æ¯è®¡æ°</para> + <para>使ç¨<literal>getMessageCount()</literal>æ¹æ³å¯ä»¥å¾å°éåä¸çæ¶æ¯æ°ãå¦å¤ï¼æ¹æ³ + <literal>countMessages()</literal>å¯ä»¥å¾å°éåä¸ææä¸<emphasis>è¿æ»¤å¨</emphasis>ç¸å¹é çæ¶æ¯æ°ã</para> + </listitem> + <listitem> + <para>ä¿®æ¹æ¶æ¯çä¼å 级</para> + <para>æ¶æ¯çä¼å 级å¯ä»¥ç¨<literal>changeMessagesPriority()</literal>æ¹æ³ä¿®æ¹ãå¦ææ¯å¸¦ä¸ä¸ªæ¶ + æ¯IDåæ°ï¼å®è¿åçæ¯ä¸ä¸ªå¸å°å¸¸éï¼å¦ææ¯å¸¦ä¸ä¸ªè¿æ»¤å¨åæ°ï¼åå®è¿åçæ¯ä¼å 级æ´æ°äºçæ¶æ¯æ°ã</para> + </listitem> + <listitem> + <para>æ¶æ¯è®¡æ°å¨</para> + <para><literal>listMessageCounter()</literal>æ¹æ³å<literal >listMessageCounterHistory()</literal> + æ¹æ³å¯ä»¥ç¨æ¥ååºéåä¸çæææ¶æ¯è®¡æ°å¨ãï¼åè§ <xref + linkend="management.message-counters"/>ï¼ã</para> + </listitem> + <listitem> + <para>è·åéåçå±æ§</para> + <para><literal>JMSQueueControl</literal>ç±»å¯ä»¥ç¨æ¥è·åJMSéåç设置åæ°ï¼ä¾å¦æ¹æ³<literal>isTemporary()</literal> + å¯ä»¥å¤æéåæ¯å¦ä¸ºä¸´æ¶çï¼æ¹æ³<literal>isDurable()</literal>å¯ä»¥å¤æéåæ¯å¦ä¸ºæä¹ çççï¼ã</para> + </listitem> + <listitem> + <para>éåçæåä¸æ¢å¤</para> + <para><literal>JMSQueueControl</literal>å¯ä»¥æåä¸ä¸ªéåææ¢å¤ä¸ä¸ªéåã + å¦æä¸ä¸ªéå被æåï¼å®è½ç¶å¯ä»¥ç»§ç»æ¥æ¶æ¶æ¯ä½æ¯ä¸ä¼ éæ¶æ¯ï¼ + å½è¢«æ¢å¤æ¶ï¼éååä¼å¼å§ä¼ éæ¶æ¯ã</para> + </listitem> + </itemizedlist> + </section> + <section> + <title>JMSè¯é¢ï¼Topicï¼ç管ç</title> + <para>JMSè¯é¢ç管çæ¯éè¿<literal>TopicControl</literal>ç±»ï¼ + the ObjectName <literal>org.hornetq:module=JMS,type=Topic,name="<è¯é¢å>"</literal> + æèµæºå <literal>jms.topic.<è¯é¢å></literal>ï¼ã</para> + <itemizedlist> + <listitem> + <para>订é åæ¶æ¯çå表</para> + <para><literal>listAllSubscriptions()</literal>ã<literal + >listDurableSubscriptions()</literal>ã <literal + >listNonDurableSubscriptions()</literal>æ¹æ³å¯ä»¥ååºè¯é¢çä¸å订é ã + è¿äºæ¹æ³é½è¿å<literal>Object</literal>æ°ç»ï¼è¡¨ç¤ºè®¢é çç»èï¼å¦è®¢é åï¼ + 客æ·IDï¼æä¹ æ§ï¼æ¶æ¯è®¡æ°çï¼ãç¨<literal + >listMessagesForSubscription()</literal>æ¹æ³å¯ä»¥ååºä¸ä¸ªè®¢é ä¸çJMSæ¶æ¯ã</para> + </listitem> + <listitem> + <para>å é¤è®¢é </para> + <para>æä¹ æ§è®¢é å¯ä»¥ä½¿ç¨<literal>dropDurableSubscription()</literal>æ¹æ³æ¥å é¤ã</para> + </listitem> + <listitem> + <para>订é æ¶æ¯è®¡æ°</para> + <para><literal>countMessagesForSubscription()</literal>æ¹æ³å¯ä»¥å¾å°ä¸ä¸ªè®¢é ä¸é¢æææ + çæ¶æ¯æ°ï¼è¿å¯å¸¦ä¸ä¸ªæ¶æ¯éæ©å¨æ¥å¾åºæå¤å°æ¶æ¯ä¸ä¹å¹é ï¼ã</para> + </listitem> + </itemizedlist> + </section> + </section> + </section> + <section id="management.jmx"> + <title>使ç¨JMX</title> + <para>HornetQæä¾äº<ulink + url="http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/" + >JMX</ulink>ã</para> + <para>HornetQéè¿MBeançæ¥å£æ´é²å ¶JMX管çæä½ãå®å°èªå·±çèµæºæ³¨åå°<literal>org.hornetq</literal>åã</para> + <para>æ¯å¦ï¼ç¨æ¥ç®¡çä¸ä¸ªå为<literal>exampleQueue</literal>JMSéåç<literal>ObjectName</literal>æ¯ï¼</para> + <programlisting> + org.hornetq:module=JMS,type=Queue,name="exampleQueue" + </programlisting> + <para>MBean为ï¼</para> + <programlisting> + org.hornetq.api.jms.management.JMSQueueControl + </programlisting> + <para>MBeanç<literal>ObjectName</literal>ç¨ <literal + >org.hornetq.api.core.management.ObjectNameBuilder</literal>æ¥äº§çåºæ¥çãä½ ä¹å¯ä»¥ä½¿ç¨<literal + >jconsole</literal>æ¥æ¥æ¾ä½ æ³è¦çMBeanç<literal>ObjectName</literal>ã</para> + <para>使ç¨JMXæ¥ç®¡çHornetQä¸ç¨JMX管çå ¶å®Javaåºç¨ç¨åºæ²¡æä»ä¹ä¸åãä½ å¯ä»¥ä½¿ç¨åå°æè å建MBean代ççæ¹æ³ã</para> + <section id="management.jmx.configuration"> + <title>é ç½®JMX</title> + <para>é»è®¤æ åµä¸HornetQçJMXæ¯æå¼çãå°<literal + >hornetq-configuration.xml</literal>æ件ä¸ç<literal + >jmx-management-enabled</literal>设置为<literal>false</literal>å°±å¯ä»¥å ³éJMXï¼</para> + <programlisting> +<!-- false to disable JMX management for HornetQ --> +<jmx-management-enabled>false</jmx-management-enabled> + </programlisting> + <para>å¦æJMXåè½æ¯æå¼çï¼å使ç¨<literal>jconsole</literal>å¯ä»¥ç®¡çæ¬å°çHornetQã</para> + <note> + <para>åºäºå®å ¨èèï¼é»è®¤æ åµä¸JMXè¿ç¨è¿æ¥æ¯å ³éçãåè§<ulink url="http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html#remote" + >Java管çæå</ulink>æ¥é ç½®æå¡å¨çè¿ç¨ç®¡çï¼ç³»ç»åéå¿ é¡»å¨<literal>run.sh</literal>æ<literal>run.bat</literal>ä¸å®ä¹ï¼ã</para> + </note> + <para>HornetQé»è®¤ä½¿ç¨JMXåå"org.hornetq"ãå¦æè¦ç¨ä¸ä¸ªMBeanServer管çå¤ä¸ªHornetQæå¡å¨ï¼å¯ä»¥å°æ¯ä¸ªHornetQ + æå¡å¨é ç½®æä¸åçJMXåãæ¹æ³å°±æ¯å¨<literal>hornetq-configuration.xml</literal>æ件ä¸è®¾ç½®<literal>jmx-domain</literal>ï¼</para> + <programlisting> +<!-- use a specific JMX domain for HornetQ MBeans --> +<jmx-domain>my.org.hornetq</jmx-domain> + </programlisting> + <section> + <title>MBeanServerçé ç½®</title> + <para>HornetQå¨ç¬ç«è¿è¡æ¶ä½¿ç¨Javaèææºç<literal + >Platform MBeanServer</literal>æ¥æ³¨åå ¶MBeanãè¿å¨JBoss Microcontainerï¼å¾®å®¹å¨ï¼çbean + æ件ä¸è¿è¡é ç½®ï¼åè§<xref linkend="server.microcontainer.configuration"/>ï¼ï¼</para> + <programlisting><!-- MBeanServer --> +<bean name="MBeanServer" class="javax.management.MBeanServer"> + <constructor factoryClass="java.lang.management.ManagementFactory" + factoryMethod="getPlatformMBeanServer" /> +</bean> + </programlisting> + <para>å½ä¸AS 5ï¼éæè¿è¡æ¶ï¼å®ä½¿ç¨åºç¨æå¡å¨èªå·±çMBeanæå¡ï¼è¿æ ·å°±å¯ä»¥ä½¿ç¨å®çjmx-consoleï¼</para> + <programlisting><!-- MBeanServer --> +<bean name="MBeanServer" class="javax.management.MBeanServer"> + <constructor factoryClass="org.jboss.mx.util.MBeanServerLocator" + factoryMethod="locateJBoss" /> +</bean> + </programlisting> + </section> + </section> + <section> + <title>ä¾å</title> + <para>åè§<xref linkend="examples.jmx"/>ï¼è¿ä¸ªä¾åå±ç¤ºäºå¦ä½ä½¿ç¨è¿ç¨JMXè¿æ¥æMBean代çæ¥ç®¡çHornetQã</para> + </section> + </section> + <section> + <title>使ç¨æ ¸å¿æ¥å£</title> + <para>æ ¸å¿ç®¡çæ¥å£çè°ç¨å®é ä¸æ¯åä¸ä¸ªç¹æ®çå°ååéæ ¸å¿æ¶æ¯ãè¿ä¸ªç¹æ®å°å称为<emphasis>管çå°å</emphasis>ã</para> + <para><emphasis>管çæ¶æ¯</emphasis>æ¯ä¸äºå®ä¹äºä¸äºåºå®å±æ§çæ®éæ ¸å¿æ¶æ¯ãæå¡å¨éè¿è¿äºå±æ§æ¥è§£é管çæä½ï¼</para> + <itemizedlist> + <listitem> + <para>管çèµæºçå称</para> + </listitem> + <listitem> + <para>管çæä½çå称</para> + </listitem> + <listitem> + <para>管çæä½çåæ°</para> + </listitem> + </itemizedlist> + <para>å½ä¸ä¸ªç®¡çæ¶æ¯åéå°ç®¡çå°åæ¶ï¼HornetQæå¡å¨å°ä»ä¸æååºç¸åºçä¿¡æ¯ï¼åè°ç¨ç¸åºç管çèµæºçæ¹æ³ï¼ä¹åå + 该管çæ¶æ¯çåçå°åï¼reply-to addressï¼ç±<literal>ClientMessageImpl.REPLYTO_HEADER_NAME + </literal>å®ä¹ï¼åéä¸ä¸ª<emphasis>管çåç</emphasis>ã</para> + <para>ä¸ä¸ª<literal>ClientConsumer</literal>ç¨æ¥æ¥æ¶ç®¡çåç并æååºå ¶ä¸çæä½ççµæï¼å¦ææçè¯ï¼ã + èèå°å¯ç§»æ¤æ§ï¼è¿åççµæéç¨çæ¯æ ¼å¼çå符串ï¼è没æéç¨Javaçåºååææ¯ + ï¼<literal>org.hornetq.api.core.management.ManagementHelper</literal>å¯ä»¥ç¨æ¥å°JSONå符串 + 转æ¢æJava对象ï¼ã</para> + <para>使ç¨ä»¥ä¸æ¥éª¤å¯ä»¥ç®å使ç¨æ ¸å¿æ¶æ¯è°ç¨ç®¡çæä½ï¼</para> + <orderedlist> + <listitem> + <para>å建ä¸ä¸ª<literal>ClientRequestor</literal>对象ï¼ç¨æ¥åé管çæ¶æ¯å¹¶æ¥æ¶åçã</para> + </listitem> + <listitem> + <para>å建ä¸ä¸ª<literal>ClientMessage</literal>ã</para> + </listitem> + <listitem> + <para>使ç¨<literal + >org.hornetq.api.core.management.ManagementHelper</literal>ç±»æ¥å¸®å©è®¾ç½®æ¶æ¯ç管çåæ°ã</para> + </listitem> + <listitem> + <para>éè¿<literal>ClientRequestor</literal>å°æ¶æ¯åé</para> + </listitem> + <listitem> + <para>ä½¿ç¨ <literal + >org.hornetq.api.core.management.ManagementHelper</literal>ç±»ä»ç®¡çæä½çµæä¸æåè¿åå¼ã</para> + </listitem> + </orderedlist> + <para>ä¾å¦ï¼è¦å¾å°æ ¸å¿éå<literal>exampleQueue</literal>ä¸æ¶æ¯çæ°éï¼</para> + <programlisting> + ClientSession session = ... + ClientRequestor requestor = new ClientRequestor(session, "jms.queue.hornetq.management"); + ClientMessage message = session.createMessage(false); + ManagementHelper.putAttribute(message, "core.queue.exampleQueue", "messageCount"); + ClientMessage reply = requestor.request(m); + int count = (Integer) ManagementHelper.getResult(reply); + System.out.println("There are " + count + " messages in exampleQueue"); + </programlisting> + <para>管çæä½ååå ¶åæ°å¿ é¡»å<literal>management</literal>å ä¸å®ä¹çJavaæ¥å£ä¸è´ã</para> + <para>èµæºçå称æ¯ç¨<literal>org.hornetq.api.core.management.ResourceNames</literal>ç±»æ¥çæçï¼ + å½åé½é常ç´è§ï¼å¦æ ¸å¿éå<literal>exampleQueue</literal>çå称为<literal>core.queue.exampleQueue</literal>ï¼ + JMS Topic <literal>exampleTopic</literal>çå称为<literal>jms.topic.exampleTopic</literal>ï¼ççï¼ã +</para> + <section id="management.core.configuration"> + <title>é ç½®æ ¸å¿ç®¡ç</title> + <para>管çå°åçé ç½®å¨æ件<literal + >hornetq-configuration.xml</literal>ä¸ï¼</para> + <programlisting> + <management-address>jms.queue.hornetq.management</management-address> + </programlisting> + <para>å®çé»è®¤å°åæ¯<literal>jms.queue.hornetq.management</literal> ï¼å°ååç¼å ä¸ + âjms.queueâæ¯ä¸ºäºæ¹ä¾¿JMS客æ·ç«¯ä¹å¯ä»¥åå®åé管çæ¶æ¯ã</para> + <para>管çå°åéè¦ä¸ä¸ª<emphasis>ç¹æ®</emphasis>çç¨æ·æé + <literal>manage</literal>æ¥æ¥æ¶å¹¶å¤ç管çæ¶æ¯ãè¿ä¸ªæéä¹å¨hornetq-configuration.xmlæ件ä¸é ç½®ï¼</para> + <programlisting> + <!-- users with the admin role will be allowed to manage --> + <!-- HornetQ using management messages --> + <security-setting match="jms.queue.hornetq.management"> + <permission type="manage" roles="admin" /> + </security-setting> + </programlisting> + </section> + </section> + <section id="management.jms"> + <title>使ç¨JMSè¿è¡ç®¡ç</title> + <para>使ç¨JMS管çHornetQä¸ä½¿ç¨æ ¸å¿API管çHornetQååç¸ä¼¼ã</para> + <para>å ¶ä¸ä¸ä¸ªéè¦çä¸åæ¯JMSéè¦ä¸ä¸ªJMSéåæ¥åéæ¶æ¯ï¼èæ ¸å¿æ¥å£ä½¿ç¨çæ¯ä¸ä¸ªå°åï¼ã</para> + <para><emphasis>管çéå</emphasis>æ¯ä¸ä¸ªç¹æ®çéåï¼å®éè¦å®¢æ·ç«¯ç´æ¥å®ä¾åï¼</para> + <programlisting> + Queue managementQueue = HornetQJMSClient.createQueue("hornetq.management"); + </programlisting> + <para>å ¶ä½æ¥éª¤å®å ¨å使ç¨æ ¸å¿æ¥å£ä¸æ ·ï¼åªæ¯ç¸åºç对象ä¸åï¼</para> + <orderedlist> + <listitem> + <para>å建ä¸ä¸ª<literal>QueueRequestor</literal>æ¥å管çå°ååé管çæ¶æ¯å¹¶æ¥æ¶åçã</para> + </listitem> + <listitem> + <para>å建ä¸ä¸ª<literal>æ¶æ¯</literal></para> + </listitem> + <listitem> + <para>ä½¿ç¨ <literal>org.hornetq.api.jms.management.JMSManagementHelper</literal>ç±»åæ¶æ¯ä¸è®¾ç½®ç®¡çåæ°ã</para> + </listitem> + <listitem> + <para>å使ç¨<literal>QueueRequestor</literal>åéæ¶æ¯ã</para> + </listitem> + <listitem> + <para>使ç¨<literal>org.hornetq.api.jms.management.JMSManagementHelper</literal>æ¥ä»åçä¸æåè¿åçµæã</para> + </listitem> + </orderedlist> + <para>ä¾å¦ï¼è¦å¾å°ä¸ä¸ªJMSéå<literal>exampleQueue</literal>ä¸æå¤å°æ¶æ¯ï¼</para> + <programlisting> + Queue managementQueue = HornetQJMSClient.createQueue("hornetq.management"); + + QueueSession session = ... + QueueRequestor requestor = new QueueRequestor(session, managementQueue); + connection.start(); + Message message = session.createMessage(); + JMSManagementHelper.putAttribute(message, "jms.queue.exampleQueue", "messageCount"); + Message reply = requestor.request(message); + int count = (Integer)JMSManagementHelper.getResult(reply); + System.out.println("There are " + count + " messages in exampleQueue"); + </programlisting> + <section> + <title>é ç½®JMS管ç</title> + <para>JMS管ççé ç½®ä¸æ ¸å¿æ¥å£ç®¡ççé ç½®æ¥éª¤æ¯ä¸æ ·çï¼åè§<xref linkend="management.core.configuration"/>ï¼ã</para> + </section> + <section> + <title>ä¾å</title> + <para>åè§<xref linkend="examples.management"/>ï¼å®å±ç¤ºäºå¦ä½ä½¿ç¨JMSæ¶æ¯æ¥ç®¡çHornetQã</para> + </section> + </section> + + <section id="management.notifications"> + <title>管çéç¥</title> + <para>HornetQå¯ä»¥ålisteneråéåç§äºä»¶ç<emphasis>éç¥</emphasis>ï¼å¦èµæºçå建ï¼å®å ¨ç ´åçï¼ã</para> + <para>æä¸ç§æ¹å¼æ¥æ¶ç®¡çéç¥</para> + <itemizedlist> + <listitem> + <para>JMXéç¥</para> + </listitem> + <listitem> + <para>æ ¸å¿æ¶æ¯</para> + </listitem> + <listitem> + <para>JMSæ¶æ¯</para> + </listitem> + </itemizedlist> + <section> + <title>JMXéç¥</title> + <para>å¦æ设置äºJMXï¼åè§<xref linkend="management.jmx.configuration"/>ï¼ï¼å°±å¯ä»¥éè¿è®¢é ä»¥ä¸ + 两个MBeanæ¥è·å¾éç¥ï¼</para> + <itemizedlist> + <listitem> + <para><literal>org.hornetq:module=Core,type=Server</literal> å¯ä»¥è·å¾æå ³ + <emphasis>æ ¸å¿</emphasis>èµæºçéç¥</para> + </listitem> + <listitem> + <para><literal>org.hornetq:module=JMS,type=Server</literal>å¯ä»¥è·å¾æå ³ + <emphasis>JMS</emphasis>èµæºçéç¥</para> + </listitem> + </itemizedlist> + </section> + <section> + <title>æ ¸å¿æ¶æ¯éç¥</title> + <para>HornetQå®ä¹äºä¸ä¸ªç¹æ®ç<emphasis>管çéç¥å°å</emphasis>ãæ ¸å¿éåç»å®å°è¯¥å°ååï¼å®¢æ· + 端就å¯ä»¥æ¥æ¶ä»¥æ ¸å¿æ¶æ¯å½¢å¼åéç管çä¿¡éç¥äºã</para> + <para>ä¸ä¸ªæ ¸å¿å®¢æ·ç«¯è¦æ³æ¥æ¶å°ç®¡çéç¥ï¼å®å¿ é¡»è¦å建ä¸ä¸ªéå并ç»å®å°è¿ä¸ªç®¡çéç¥å°åä¸ï¼ç¶åä»è¿ä¸ª + éåæ¥æ¶éç¥ã</para> + <para>éç¥æ¶æ¯å°±æ¯æ®éçæ ¸å¿æ¶æ¯å ä¸ç¸å ³çå±æ§ï¼å¦éç¥ç±»åï¼äºä»¶åçæ¶é´ï¼èµæºçï¼ã</para> + <para>ç±äºæ¯æ åçæ ¸å¿æ¶æ¯ï¼ä½¿ç¨éæ©å¨è¿è½å¤è¿æ»¤æä¸é¨åéç¥èåªæ¥æ¶æå ´è¶£çéç¥ã</para> + <section id="management.notifications.core.configuration"> + <title>é ç½®æ ¸å¿ç®¡çéç¥å°å</title> + <para>ç¨æ¥åé管çéç¥çå°åå¨æ件ä¸<literal>hornetq-configuration.xml</literal>é ç½®ï¼</para> + <programlisting> + <management-notification-address>hornetq.notifications</management-notification-address> + </programlisting> + <para>é»è®¤çå°åæ¯<literal>hornetq.notifications</literal>ã</para> + </section> + </section> + <section> + <title>JMSæ¶æ¯éç¥</title> + <para>HornetQè¿å¯ä»¥éè¿JMSæ¶æ¯çæ¹å¼åééç¥ã</para> + <para>è¿ç§æ¹å¼ä¸æ ¸å¿æ¶æ¯éç¥ç¸ä¼¼ï¼ä½æ¯æä¸ä¸ªéè¦çä¸åï¼JMSæ¶æ¯éè¦ä¸ä¸ªJMSçç®æ ï¼é常æ¯ä¸ä¸ªTopicï¼ã</para> + <para>è¦éè¿ä¸ä¸ªJMSç®æ æ¥æ¥æ¶ç®¡çéç¥ï¼å¿ é¡»å°æå¡å¨ç管çéç¥å°åä¿®æ¹ä¸ºä»¥<literal>jms.queue</literal>å¼å¤´ï¼å¦ææ¯ä¸ä¸ª + JMSéåï¼æè <literal>jms.topic</literal>ï¼å¦ææ¯ä¸ä¸ªè¯é¢ï¼ï¼</para> + <programlisting> + <!-- éç¥å°ä»JMSè¯é¢ "notificationsTopic"ä¸æ¥æ¶ --> + <management-notification-address>jms.topic.notificationsTopic</management-notification-address> + </programlisting> + <para>è¿ä¸ªéç¥è¯é¢ä¸æ¦è¢«å建ï¼å°±å¯ä»¥æ¥æ¶æ¶æ¯äºï¼æè 使ç¨<literal>MessageListener</literal>ï¼ï¼</para> + <programlisting> + Topic notificationsTopic = HornetQJMSClient.createTopic("notificationsTopic"); + + Session session = ... + MessageConsumer notificationConsumer = session.createConsumer(notificationsTopic); + notificationConsumer.setMessageListener(new MessageListener() + { + public void onMessage(Message notif) + { + System.out.println("------------------------"); + System.out.println("Received notification:"); + try + { + Enumeration propertyNames = notif.getPropertyNames(); + while (propertyNames.hasMoreElements()) + { + String propertyName = (String)propertyNames.nextElement(); + System.out.format(" %s: %s\n", propertyName, notif.getObjectProperty(propertyName)); + } + } + catch (JMSException e) + { + } + System.out.println("------------------------"); + } + }); + </programlisting> + </section> + <section> + <title>ä¾å</title> + <para>åè§<xref linkend="examples.management-notifications"/>ãæ¬ä¾éç¨äºJMSç<literal> + MessageListener</literal>æ¹æ³ä»HornetQ + æå¡å¨æ¥æ¶ç®¡çéç¥ã</para> + </section> + </section> + <section id="management.message-counters"> + <title>æ¶æ¯è®¡æ°å¨</title> + <para>HornetQä¿åçéåçåå²æ°æ®ï¼èæ¶æ¯è®¡æ°å¨å¯ä»¥ä»æå¡å¨ä¸è·åè¿äºä¿¡æ¯ã</para> + <para>è¿äºä¿¡æ¯å¯ä»¥æ¾ç¤ºéåçä¸äº<emphasis>è¶å¿</emphasis>ãä¾å¦ï¼ä½¿ç¨ç®¡çæ¥å£ä½ å¯ä»¥å®ææ¥æ¥è¯¢ä¸ä¸ªéå + çæ¶æ¯æ°éãä½è¿ä¸ªæ°éä¸è¶³ä»¥è¯´æè¿ä¸ªéåæ¯å¦å¨å·¥ä½ï¼ï¼ä¹è®¸è¿ä¸ªéåæ¢æ²¡æåéè ä¹æ²¡ææ¥æ¶è ï¼ä¹è®¸è¿ä¸ªéå + å¨ä¸åå°åéä¸æ¥æ¶ï¼ä½æ¯åéæ¶æ¯çé度ä¸æ¥æ¶çé度ç¸çã两å±æ åµä¸é½ä¼é ææ¶æ¯æ°å¨éåä¸ä¸åï¼ä½å®é éå + çç¶æç¡®å®å ¨ä¸ä¸æ ·ã</para> + <para>æ¶æ¯è®¡æ°å¨å¯ä»¥æä¾éåçæ´å¤çä¿¡æ¯ï¼</para> + <itemizedlist> + <listitem> + <para><literal>count</literal></para> + <para>ä»æå¡å¨å¯å¨æ¶å å°éåä¸ç<emphasis>æ»</emphasis>æ¶æ¯æ°ã</para> + </listitem> + <listitem> + <para><literal>countDelta</literal></para> + <para>èª<emphasis>ä¸æ¬¡æ¶æ¯è®¡æ°å¨æ´æ°</emphasis>åå å ¥å°éåçæ¶æ¯æ°ã</para> + </listitem> + <listitem> + <para><literal>depth</literal></para> + <para>éå<emphasis>å½å</emphasis>çæ¶æ¯æ°ã</para> + </listitem> + <listitem> + <para><literal>depthDelta</literal></para> + <para>èª<emphasis>ä¸æ¬¡æ¶æ¯è®¡æ°å¨æ´æ°</emphasis>å被å å ¥ï¼å é¤çæ¶æ¯<emphasis>æ»æ°</emphasis>ã + ä¾å¦ï¼å¦æ<literal>depthDelta</literal>æ¯<literal>-10</literal>ï¼å°±æè°çæ10个æ¶æ¯ä» + éåä¸å é¤äºï¼æå¯è½æ¯2个æ¶æ¯å å ¥äºä½æ12个æ¶æ¯å é¤äºï¼ã</para> + </listitem> + <listitem> + <para><literal>lastAddTimestamp</literal></para> + <para>æåä¸ä¸ªæ¶æ¯å å ¥å°éåçæ¶é´æ³ã</para> + </listitem> + <listitem> + <para><literal>udpateTimestamp</literal></para> + <para>æåä¸æ¬¡æ¶æ¯è®¡æ°å¨æ´æ°çæ¶é´æ³ã</para> + </listitem> + </itemizedlist> + <section id="configuring.message.counters"> + <title>é ç½®æ¶æ¯è®¡æ°å¨</title> + <para>é»è®¤çæ¶æ¯è®¡æ°å¨æ¯å ³éçï¼å 为å®éè¦å ç¨ä¸äºå åã</para> + <para>è¦æå¼æ¶æ¯è®¡æ°å¨ï¼ç¼è¾<literal>hornetq-configuration.xml</literal>æ件å°å ¶è®¾ä¸º<literal>true</literal>ï¼</para> + <programlisting> +<message-counter-enabled>true</message-counter-enabled> + </programlisting> + <para>æ¶æ¯è®¡æ°å¨ä¼ä¿åéåçåå²æ°æ®ï¼é»è®¤æ¯10天ï¼ãå®ä»¥ä¸å®é´éï¼é»è®¤10ç§ä¸æ¬¡ï¼å¯¹æ¯ä¸ªéåè¿è¡æ«æã + å¦ææ¶æ¯è®¡æ°å¨æå¼ï¼è¿äºåæ°å¯ä»¥å¨<literal>hornetq-configuration.xml</literal>æ件ä¸è¿è¡è°æ´ï¼</para> + <programlisting> +<!-- keep history for a week --> +<message-counter-max-day-history>7</message-counter-max-day-history> +<!-- sample the queues every minute (60000ms) --> +<message-counter-sample-period>60000</message-counter-sample-period> + </programlisting> + <para>使ç¨ç®¡çæ¥å£å¯ä»¥è·å¾æ¶æ¯è®¡æ°å¨ãä¾å¦è¦ä½¿ç¨JMXå¾å°ä¸ä¸ªJMSéåçæ¶æ¯è®¡æ°å¨ï¼</para> + <programlisting> +// retrieve a connection to HornetQ's MBeanServer +MBeanServerConnection mbsc = ... +JMSQueueControlMBean queueControl = (JMSQueueControl)MBeanServerInvocationHandler.newProxyInstance(mbsc, + on, + JMSQueueControl.class, + false); +// message counters are retrieved as a JSON String +String counters = queueControl.listMessageCounter(); +// use the MessageCounterInfo helper class to manipulate message counters more easily +MessageCounterInfo messageCounter = MessageCounterInfo.fromJSON(counters); +System.out.format("%s message(s) in the queue (since last sample: %s)\n", + counter.getDepth(), + counter.getDepthDelta()); + </programlisting> + </section> + <section> + <title>ä¾å</title> + <para>åè§<xref linkend="examples.message-counters"/>ãè¿ä¸ªä¾å使ç¨æ¶æ¯è®¡æ°å¨æ¥è·å¾ä¸ä¸ªJMSéåçç¸å ³æ°æ®ã</para> + </section> + </section> + <section> + <title>éè¿JBossåºç¨æå¡å¨çAdmin Consoleæ¥ç®¡çHornetQçèµæº</title> + <para>éè¿JBossåºç¨æå¡å¨çAdmin Consoleå¯ä»¥å建ä¸é ç½®HornetQçåç§èµæºã</para> + <para>Admin Consoleå è®¸ä½ å建åç§ç®æ ï¼JMSè¯é¢ä¸éåï¼åJMSçè¿æ¥å·¥åã</para> + <para>ç»å½admin consoleåä½ å¨å·¦è¾¹çæ ä¸ä¼çå°JMS Managerèç¹ãææHornetQçèµæºé½å±äºè¿ä¸ªèç¹ãå¨å®çä¸é¢æJMS Queuesã + Topics以åConnection Factoriesãåå«ç¹å»å®ä»¬å°ä¼çå°ç¸åºçèµæºãä¸é¢å°è§£éå¦ä½å建并é ç½®å®ä»¬ã</para> + <section> + <title>JMSéå</title> + <para>è¦å建ä¸ä¸ªæ°çJMSéåï¼ç¹å»JMS Queueså°ååºå½åçéåãå¨å³è¾¹ççªå£ä¸æä¸ä¸ªâadd a new resourceâæé®ï¼ç¹å»è¿ä¸ªæé® + 并éæ©é»è®¤ï¼JMS éåï¼æ¨¡æ¿ãç¹å»âcontinueâãå¡«å ¥ç¸åºçéåå称ä¸JNDIå称ãå ¶å®çåæ°å¼é½ç»åºäºåççé»è®¤å¼ï¼é常æ åµä¸ + ä¸ç¨æ¹å¨å®ä»¬ãå¨åºé¨å¯ä»¥é ç½®å®å ¨è§è²ï¼å¦æä½ ä¸æä¾å°ä½¿ç¨é»è®¤çé ç½®ãå½è¿ä¸ªéåæåå建åè¿äºé ç½®å°ä¼æ¾ç¤ºåºæ¥ãé¤äºéåçåå + åJNDIååå¤ï¼å ¶å®åæ°é½å¯ä»¥å¨contigurationæ ç¾é¡µä¸è¿è¡ä¿®æ¹ãä¸é¢å°±å¯¹å®ä»¬åå«è§£éã</para> + <para>ç¹å» configurationåä½ å°çå°å¦ä¸æ¾ç¤ºï¼</para> + <para> + <graphic fileref="images/console1.png" align="center"/> + </para> + <para>nameåJNDI nameæ¯ä¸è½æ¹åçãå¦æä½ æ³æ¹åå®ä»¬ï¼å¿ é¡»éæ°å建éåãå ¶å®é项æ¯å ³äºå°å设置ä¸å®å ¨è®¾ç½®ã + é»è®¤çå°å设置æ¥èªäºæå¡å¨çé ç½®ãå¦æä½ éè¿consoleä¿®æ¹æå建ä¸ä¸ªéåï¼é£ä¹å°±ä¼å¢å ä¸æ¡æ°çå°å设置ãæå ³ + å°å设置çå®æ´è¯´æåè§<xref linkend="queue-attributes.address-settings"/>ã</para> + <para>è¦å é¤ä¸ä¸ªéåï¼åªè¦ç¹å»éåå称æè¾¹çâdeleteâæé®å³å¯ãä¸æ¤éåç¸å ³çä»»ä½å°å设置æå®å ¨è®¾ç½®ä¹å°è¢«å é¤ã</para> + <para>é ç½®çæåä¸é¨åæ¯å®å ¨è§è²ãå¦æå¨å建æ¶æ²¡æç»åºåé»è®¤çå®å ¨è®¾ç½®å°ä¼æ¾ç¤ºå¨å±å¹ä¸ãå¦æå®ä»¬è¢«ä¿®æ¹å¹¶æ´æ°åéåçå®å ¨è®¾ç½® + å°è¢«æ´æ°ãå ³äºå®å ¨è®¾ç½®åè§<xref linkend="security"/>ã </para> + <para>å¨consoleä¸è¿æä¸ä¸ªmetricsæ ç¾é¡µï¼å®æ¾ç¤ºäºéåçå项ç»è®¡æ°æ®ï¼å¦æ¶æ¯è®¡æ°ï¼æ¥æ¶è 计æ°çã</para> + <para>å¨controlæ ç¾é¡µä¸å¯ä»¥å¯¹éåè¿è¡åç§æä½ï¼æ¯å¦å¯å¨ååæ¢éåï¼å¯¹éåä¸çæ¶æ¯è¿è¡å表ï¼ç§»å¨ï¼å为è¿æï¼å é¤çã + è¦è¿è¡ä¸é¡¹æä½åªè¦ç¹å»ç¸åºçæé®ï¼ç¶åå¨åºç°çæ示ä¸è¾å ¥ç¸åºçåæ°ï¼åç¹å»okæé®å³å¯ãæä½ççµæä¼æ¾ç¤ºå¨å±å¹çåºé¨ã</para> + </section> + <section> + <title>JMSè¯é¢</title> + <para>å建åé ç½®JMSè¯é¢å ä¹ä¸éåçæä½æ¯ä¸æ ·çãå¯ä¸ä¸åçæ¯è¿äºé ç½®åºç¨äºä¸ä¸ªä»£è¡¨è®¢é çéåã</para> + </section> + <section> + <title>JMSè¿æ¥å·¥å</title> + <para>JMSè¿æ¥å·¥åçå建çæä½è¿ç¨ä¸ä¸è¿°éåæè¯é¢çæä½ä¸è´ï¼åªæ¯é ç½®å ·ä½çåæ°ä¸åèå·²ãå ³äºè¿æ¥å·¥åçåæ°åè§é 置索å¼ã</para> + </section> + </section> +</chapter>
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/master.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/master.xml b/docs/user-manual/zh/master.xml new file mode 100644 index 0000000..9023ca0 --- /dev/null +++ b/docs/user-manual/zh/master.xml @@ -0,0 +1,128 @@ +<?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. --> +<!-- ============================================================================= --> + +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3CR3//EN" + "../../../lib/docbook-support/support/docbook-dtd/docbookx.dtd" [ + <!ENTITY appserver-integration SYSTEM "appserver-integration.xml"> + <!ENTITY architecture SYSTEM "architecture.xml"> + <!ENTITY client-reconnection SYSTEM "client-reconnection.xml"> + <!ENTITY client-classpath SYSTEM "client-classpath.xml"> + <!ENTITY clusters SYSTEM "clusters.xml"> + <!ENTITY configuration-index SYSTEM "configuration-index.xml"> + <!ENTITY configuring-transports SYSTEM "configuring-transports.xml"> + <!ENTITY connection-ttl SYSTEM "connection-ttl.xml"> + <!ENTITY core-bridges SYSTEM "core-bridges.xml"> + <!ENTITY diverts SYSTEM "diverts.xml"> + <!ENTITY duplicate-detection SYSTEM "duplicate-detection.xml"> + <!ENTITY embedding-hornetq SYSTEM "embedding-hornetq.xml"> + <!ENTITY examples SYSTEM "examples.xml"> + <!ENTITY filter-expressions SYSTEM "filter-expressions.xml"> + <!ENTITY flow-control SYSTEM "flow-control.xml"> + <!ENTITY ha SYSTEM "ha.xml"> + <!ENTITY transaction-config SYSTEM "transaction-config.xml"> + <!ENTITY intercepting-operations SYSTEM "intercepting-operations.xml"> + <!ENTITY interoperability SYSTEM "interoperability.xml"> + <!ENTITY jms-bridge SYSTEM "jms-bridge.xml"> + <!ENTITY jms-core-mapping SYSTEM "jms-core-mapping.xml"> + <!ENTITY large-messages SYSTEM "large-messages.xml"> + <!ENTITY last-value-queues SYSTEM "last-value-queues.xml"> + <!ENTITY logging SYSTEM "logging.xml"> + <!ENTITY management SYSTEM "management.xml"> + <!ENTITY message-expiry SYSTEM "message-expiry.xml"> + <!ENTITY message-grouping SYSTEM "message-grouping.xml"> + <!ENTITY messaging-concepts SYSTEM "messaging-concepts.xml"> + <!ENTITY notice SYSTEM "notice.xml"> + <!ENTITY paging SYSTEM "paging.xml"> + <!ENTITY perf-tuning SYSTEM "perf-tuning.xml"> + <!ENTITY persistence SYSTEM "persistence.xml"> + <!ENTITY pre-acknowledge SYSTEM "pre-acknowledge.xml"> + <!ENTITY preface SYSTEM "preface.xml"> + <!ENTITY project-info SYSTEM "project-info.xml"> + <!ENTITY queue-attributes SYSTEM "queue-attributes.xml"> + <!ENTITY scheduled-messages SYSTEM "scheduled-messages.xml"> + <!ENTITY security SYSTEM "security.xml"> + <!ENTITY send-guarantees SYSTEM "send-guarantees.xml"> + <!ENTITY thread-pooling SYSTEM "thread-pooling.xml"> + <!ENTITY undelivered-messages SYSTEM "undelivered-messages.xml"> + <!ENTITY using-core SYSTEM "using-core.xml"> + <!ENTITY using-jms SYSTEM "using-jms.xml"> + <!ENTITY using-server SYSTEM "using-server.xml"> + <!ENTITY wildcard-syntax SYSTEM "wildcard-syntax.xml"> + <!ENTITY wildcard-routing SYSTEM "wildcard-routing.xml"> + <!ENTITY libaio SYSTEM "libaio.xml"> + ]> +<book lang="en"> + <bookinfo> + <title>HornetQ 2.1ç¨æ·æå</title> + <subtitle>Putting the buzz in messaging</subtitle> + </bookinfo> + + <toc></toc> + + ¬ice; + &preface; + &project-info; + &messaging-concepts; + &architecture; + &using-server; + &using-jms; + &using-core; + &jms-core-mapping; + &client-classpath; + &examples; + &wildcard-routing; + &wildcard-syntax; + &filter-expressions; + &persistence; + &configuring-transports; + &connection-ttl; + &transaction-config; + &flow-control; + &send-guarantees; + &undelivered-messages; + &message-expiry; + &large-messages; + &paging; + &queue-attributes; + &scheduled-messages; + &last-value-queues; + &message-grouping; + &pre-acknowledge; + &management; + &security; + &appserver-integration; + &jms-bridge; + &client-reconnection; + &diverts; + &core-bridges; + &duplicate-detection; + &clusters; + &ha; + &libaio; + &thread-pooling; + &logging; + &embedding-hornetq; + &intercepting-operations; + &interoperability; + &perf-tuning; + &configuration-index; + + +</book> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/message-expiry.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/message-expiry.xml b/docs/user-manual/zh/message-expiry.xml new file mode 100644 index 0000000..5feb6f2 --- /dev/null +++ b/docs/user-manual/zh/message-expiry.xml @@ -0,0 +1,81 @@ +<?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="message-expiry"> + <title>è¿æçæ¶æ¯</title> + <para>æ¶æ¯å¨åéæ¶æä¸ä¸ªå¯éç<emphasis>çåæ¶é´</emphasis>å±æ§ã</para> + <para>å¦æä¸ä¸ªæ¶æ¯å·²ç»è¶ è¿äºå®ççåæ¶é´ï¼HornetQä¸åå°å®ä¼ éç»ä»»ä½æ¥æ¶è ã + æå¡å¨ä¼å°è¿æçæ¶æ¯æå¼ã</para> + <para>HornetQçå°åå¯ä»¥é ç½®ä¸ä¸ªè¿æå°åï¼å½æ¶æ¯è¿ææ¶ï¼å®ä»¬è¢«ä»éåä¸å é¤å¹¶è¢«è½¬ç§»å°è¿æå°åä¸ã + å¤ä¸ªä¸åçéåå¯ä»¥ç»å®å°ä¸ä¸ªè¿æå°åä¸ãè¿äºè¿æçæ¶æ¯è¿åå¯ä»¥æ¥æ¶ä¸æ¥ä»¥ä¾åæç¨ã</para> + <section> + <title>è¿ææ¶æ¯çé ç½®</title> + <para>å¦æ使ç¨HornetQæ ¸å¿APIï¼å¯ä»¥ç´æ¥å¨æ¶æ¯ä¸è®¾ç½®è¿ææ¶é´ï¼</para> + <programlisting> +// message will expire in 5000ms from now +message.setExpiration(System.currentTimeMillis() + 5000); + </programlisting> + <para>JMSçMessageProducerå¯ä»¥è®¾ç½®ä¸ä¸ªTimeToLiveæ¥æ§å¶å ¶åéçæ¶æ¯ï¼</para> + <programlisting> +// messages sent by this producer will be retained for 5s (5000ms) before expiration +producer.setTimeToLive(5000); + </programlisting> + <para>ä»è¿æå°åä¸æ¥æ¶ä¸æ¥çæ¶æ¯æ以ä¸å±æ§ï¼</para> + <itemizedlist> + <listitem> + <para><literal>_HQ_ORIG_ADDRESS</literal></para> + <para>è¿æ¯ä¸ä¸ªå符串ï¼å®æ¯è¯¥æ¶æ¯ç<emphasis>åå§å°å</emphasis>ã</para> + </listitem> + <listitem> + <para><literal>_HQ_ACTUAL_EXPIRY</literal></para> + <para>ä¸ä¸ªé¿æ´åéï¼ä»£è¡¨æ¤æ¶æ¯<emphasis>å®é è¿ææ¶é´</emphasis>ã</para> + </listitem> + </itemizedlist> + </section> + <section id="message-expiry.configuring"> + <title>é ç½®è¿æå°å</title> + <para>è¿æå°åé ç½®å¨å°å设置ï¼address-settingï¼ä¸ï¼</para> + <programlisting> +<!-- expired messages in exampleQueue will be sent to the expiry address expiryQueue --> +<address-setting match="jms.queue.exampleQueue"> + <expiry-address>jms.queue.expiryQueue</expiry-address> +</address-setting> + </programlisting> + <para>å¦æ没æå®ä¹è¿æå°åï¼å½ä¸ä¸ªæ¶æ¯è¿ææ¶ï¼å®å°è¢«å é¤ãé ç½®è¿æå°åæ¶å¯ä»¥ä½¿ç¨éé 符 + æ¥ç»ä¸ç»å°åé ç½®è¿æå°åãï¼åè§<xref linkend="wildcard-syntax"/>ï¼ã</para> + </section> + <section id="configuring.expiry.reaper"> + <title>é ç½®è¿æåæ¶çº¿ç¨</title> + <para>HornetQæä¸ä¸ªåæ¶çº¿ç¨å®æå°æ£æ¥éåä¸çæ¶æ¯ï¼ç®çæ¯åç°æ¯å¦ææ¶æ¯è¿æã</para> + <para>å¨<literal>hornetq-configuration.xml</literal>æ件ä¸å¯ä»¥å¯¹åæ¶çº¿ç¨è¿è¡é ç½®ï¼åæ°å¦ä¸ï¼</para> + <itemizedlist> + <listitem> + <para><literal>message-expiry-scan-period</literal></para> + <para>è¿ææ¶æ¯çæ«æé´éï¼åä½æ¯«ç§ï¼é»è®¤ä¸º30000msï¼ãå¦è¦å ³éæ«æï¼å°å ¶è®¾ä¸º<literal>-1</literal>ã</para> + </listitem> + <listitem> + <para><literal>message-expiry-thread-priority</literal></para> + <para>åæ¶çº¿ç¨çä¼å 级ï¼ä¸º0å°9çæ´æ°ï¼9ä¼å 级æé«ãé»è®¤æ¯3ï¼ã</para> + </listitem> + </itemizedlist> + </section> + <section> + <title>ä¾å</title> + <para>åè§<xref linkend="examples.expiry"/>ãè¿ä¸ªä¾åå±ç¤ºäºå¨JMSä¸å¦ä½é 置使ç¨æ¶æ¯è¿æåè½ã</para> + </section> +</chapter> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/user-manual/zh/message-grouping.xml ---------------------------------------------------------------------- diff --git a/docs/user-manual/zh/message-grouping.xml b/docs/user-manual/zh/message-grouping.xml new file mode 100644 index 0000000..c41341f --- /dev/null +++ b/docs/user-manual/zh/message-grouping.xml @@ -0,0 +1,149 @@ +<?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="message-grouping"> + <title>æ¶æ¯åç»</title> + <para>æ¶æ¯ç»æ¯å ·æä¸åç¹æ§çæ¶æ¯éåï¼</para> + <itemizedlist> + <listitem> + <para>å¨ä¸ä¸ªæ¶æ¯ç»ä¸çæ¶æ¯æç¸åçç»æ è¯ï¼idï¼ï¼å³å®ä»¬ç<literal>JMSXGroupID</literal>ï¼JMSï¼æ + <literal>_HQ_GROUP_ID</literal>ï¼HornetQæ ¸å¿ï¼çå¼ç¸åã</para> + </listitem> + <listitem> + <para>ä¸ç®¡åå¨å¤å°ä¸ªæ¥æ¶è ï¼consumerï¼ï¼ä¸ä¸ªæ¶æ¯ç»çæææ¶æ¯æ»æ¯è¢«åä¸ä¸ªæ¥æ¶è ææ¥æ¶ãä¸ä¸ªç»idæ»æ¯ + ä¸åä¸ä¸ªæ¥æ¶è ç¸å ³èãå¦æè¿ä¸ªæ¥æ¶è è¢«å ³éï¼å¦å¤ä¸ä¸ªæ¥æ¶è 就被éä¸æ¥ä»£æ¿å®æ¥æ¶è¯¥æ¶æ¯ç»çæ¶æ¯ã</para> + </listitem> + </itemizedlist> + <para>æ¶æ¯ç»å¨éè¦åä¸ä¸ªæ¥æ¶è æ顺åºå¤çæç±»æ¶æ¯çæ¶åå¾æç¨ã</para> + <para>ä¸æ¯è¡ç¥¨ç订è´å°±æ¯ä¸ä¸ªä¾åãææ¯è¡ç¥¨ç订åéè¦åä¸ä¸ªæ¥æ¶è æ顺åºå¤çãäºæ¯å¯ä»¥æ¯æ¯è¡ç¥¨æä¸ä¸ªæ¥æ¶è + æ¥å¤çï¼ä¹å¯ä»¥ç¨å°ä¸äºçæ¥æ¶è ï¼ï¼ç¶åå°æ¯æ¯è¡ç¥¨çåå设å¨æ¶æ¯ç_HQ_GROUP_IDåæ°ä¸ã</para> + <para>è¿æ ·å¯ä»¥ä¿è¯ä¸æ¯è¡ç¥¨çæ¶æ¯åªè¢«åä¸ä¸ªæ¥æ¶è å¤çã</para> + <section> + <title>使ç¨æ ¸å¿æ¥å£</title> + <para>ç¨æ¥æ è¯ä¸ä¸ªæ¶æ¯ç»çåæ°æ¯ <literal>"_HQ_GROUP_ID""</literal> ï¼æè ç¸åºç常é<literal + >MessageImpl.HDR_GROUP_ID</literal>ï¼ãå¦ä¸ç§æ¹æ³æ¯å¨<literal>SessionFactory</literal> + ä¸å°<literal>autogroup</literal>设置为trueãè¿æ ·åçè¯ç»idæ¯éæºç»åºçã</para> + </section> + <section id="message-grouping.jmsconfigure"> + <title>使ç¨JMS</title> + <para>ç¨æ¥æ è¯ä¸ä¸ªæ¶æ¯ç»çåæ°æ¯<literal>JMSXGroupID</literal>ã</para> + <programlisting> + // send 2 messages in the same group to ensure the same + // consumer will receive both + Message message = ... + message.setStringProperty("JMSXGroupID", "Group-0"); + producer.send(message); + + message = ... + message.setStringProperty("JMSXGroupID", "Group-0"); + producer.send(message); + </programlisting> + <para>å¦ä¸ä¸ªæ¹æ³æ¯å°<literal>HornetQConnectonFactory</literal>ç<literal>autogroup</literal> + å±æ§è®¾ä¸ºtrueï¼æè å¨<literal>hornetq-jms.xml</literal>æ件ä¸è¿è¡é ç½®ï¼</para> + <programlisting><connection-factory name="ConnectionFactory"> + <connectors> + <connector-ref connector-name="netty-connector"/> + </connectors> + <entries> + <entry name="ConnectionFactory"/> + </entries> + <autogroup>true</autogroup> +</connection-factory></programlisting> + <para>è¿å¯ä»¥éè¿è¿æ¥å·¥åæ¥è®¾ç½®ç»idãæ¥èªè¿ä¸ªè¿æ¥å·¥åçææçåéè ï¼producerï¼åéçæ¶æ¯ç<literal + >JMSXGroupID</literal>å°å ·ææå®çå¼ãè¿ç§æ¹æ³éè¦å¨<literal>hornetq-jms.xml</literal> + æ件ä¸ä½å¦ä¸é ç½®ï¼ + <programlisting> + <connection-factory name="ConnectionFactory"> + <connectors> + <connector-ref connector-name="netty-connector"/> + </connectors> + <entries> + <entry name="ConnectionFactory"/> + </entries> + <group-id>Group-0</group-id> + </connection-factory> + </programlisting></para> + </section> + <section> + <title>ä¾å</title> + <para>åè§<xref linkend="examples.message-group"/>ãè¿ä¸ªä¾åå±ç¤ºçæ¯å¨JMSä¸å¦ä½é ç½®ä¸ä½¿ç¨æ¶æ¯ç»ã</para> + </section> + <section> + <title>ä¾å</title> + <para><xref linkend="examples.message-group2"/>æ¯å¦å¤ä¸ä¸ªæ¶æ¯ç»çä¾åï¼å¨è¿ä¸ªä¾åä¸éè¿é ç½®è¿æ¥å·¥å + æ¥ä½¿ç¨æ¶æ¯ç»ã</para> + </section> + <section> + <title>é群ä¸çæ¶æ¯ç»</title> + <para>å¨é群ä¸ä½¿ç¨æ¶æ¯ç»æ¯ç¸å¯¹æ¯è¾å¤æçãè¿æ¯å å¨å¨é群ä¸ï¼ä¸ä¸ªæ¶æ¯ç»ä¸çæ¶æ¯æå¯è½è¢«éå°é群ä¸çä»»ä¸å ¨èç¹ï¼ + è¿å°±è¦æ±æ¯ä¸ªèç¹é½è¦ç¥éè¿ä¸ªæ¶æ¯æ¯å±äºåªä¸ªèç¹ä¸çåªä¸ªæ¥æ¶è ï¼consumerï¼ãä¸ä¸ªæ¶æ¯ç»çæ¶æ¯å¾å¾ä¼è¢«åéå° + é群ä¸çä¸ä¸ªèç¹ï¼è该æ¶æ¯ç»çæ¥æ¶è å¨å¦ä¸ä¸ªèç¹ä¸ãæ¯ä¸ªèç¹é½è¦ç¥éè¿äºç»è以便è½å°æ¶æ¯æ£ç¡®è·¯ç±å°æå±æ¥æ¶ + è æå¨çèç¹ä¸ã</para> + <para>为äºè§£å³ä¸è¿°é®é¢ï¼æ们使ç¨äºæ¶æ¯ç»å¤çå¨ãæ¯ä¸ªèç¹é½æä¸ä¸ªèªå·±çæ¶æ¯ç»å¤çå¨ãå½ä¸ä¸ªå¸¦æç»idçæ¶æ¯æ¶å°æ¶ï¼ + è¿äºèç¹çæ¶æ¯ç»å¤çå¨å°±ä¼ååä½åºå³å®è¯¥å¦ä½å¯¹è¿ä¸ªæ¶æ¯è¿è¡è·¯ç±ã</para> + <para>æ¶æ¯ç»å¤çå¨æ两ç§ï¼æ¬å°æ¶æ¯ç»å¤çå¨åè¿ç¨æ¶æ¯ç»å¤çå¨ãå¨ä¸ä¸ªé群ä¸è¦éæ©ä¸ä¸ªèç¹ä½ä¸ºæ¬å°æ¶æ¯ç»å¤çå¨ç + èç¹ï¼é群ä¸ææå ¶å®çèç¹é½ææè¿ç¨æ¶æ¯ç»å¤çå¨ãå¨é群ä¸ç±æ¬å°æ¶æ¯ç»å¤çå¨æçµå³å®æ¶æ¯ææ ·è·¯ç±ï¼å ¶å®çè¿ç¨ + å¤çå¨é åæ¬å°å¤çå¨å®æå³çãæ¶æ¯ç»å¤çå¨çé ç½®å¨<emphasis role="italic">hornetq-configuration.xml</emphasis> + æ件ä¸ï¼ä¸é¢å°±æ¯ä¸ä¸ªä¾åï¼ +<programlisting> <grouping-handler name="my-grouping-handler"> + <type>LOCAL</type> + <address>jms</address> + <timeout>5000</timeout> + </grouping-handler> + + <grouping-handler name="my-grouping-handler"> + <type>REMOTE</type> + <address>jms</address> + <timeout>5000</timeout> + </grouping-handler></programlisting></para> + <para><emphasis role="italic">address</emphasis>å±æ§è¡¨ç¤ºä¸ä¸ªé群çè¿æ¥ä»¥åå®ä½¿ç¨çå°åãæå ³å¦ä½é ç½®é群 + åè§éç¾¤ç« èã<emphasis role="italic">timeout</emphasis>å±æ§ä»£è¡¨ååºè·¯ç±å³å®æéè¦çå¾ çæ¶é´ãå¦æè¶ è¿ + äºè¿ä¸ªæ¶é´è¿æ²¡æååºå³å®ï¼åä¼æåºå¼å¸¸ãè¿å¯ä»¥ä¿è¯ä¸¥æ ¼ç顺åºã</para> + <para>æ¶å°æ¶æ¯çèç¹ä¼é¦å æåºä¸ä¸ªæ¶æ¯è·¯ç±ç建议ãå®éç¨è½®è¯¢æ¹å¼æ¥éæ©ä¸ä¸ªåéçè·¯ç±ãå®é¦å éæ©ä¸ä¸ªæ¬å°çéåï¼ä¹å + åéæ©ä¸ä¸ªææ¥æ¶è çéåãå¦æè¿ä¸ªå»ºè®®è¢«ææç»å¤çå¨æ¥åï¼æ¶æ¯å°±ä¼è¢«è·¯ç±å°æéçéåãå¦æ被æç»å°±æåºå¦ä¸ä¸ªè·¯ + ç±æ¹æ¡ï¼å¦æ¤åå¤ç´å°æ¹æ¡è¢«æ¥å为æ¢ãéåéæ©åææå ¶å®çèç¹é½å°æ¶æ¯è·¯ç±å°è¿ä¸ªéåãè¿æ ·ææçæ¶æ¯ç»çæ¶æ¯å¨ä¸ä¸ª + èç¹ä¸è¿è¡å¤çï¼ä¹å°±æ¯è¯¥èç¹ä¸çæ¥æ¶è æ¥æ¶ææçåç»çæ¶æ¯ã</para> + <para>ç±äºåªæä¸ä¸ªæ¬å°å¤çå¨ï¼å¦æå®çèç¹åºç°æ éåæ æ³ååºå³å®ãè¿æ¶ææçæ¶æ¯å°ä¸è½è¢«ä¼ éï¼å¹¶ä¸ä¼æåºå¼å¸¸ã + 为äºé¿å è¿ä¸åç¹æ éï¼æ¬å°å¤çå¨å¯ä»¥å¨å¤ä»½èç¹ä¸æä¸ä¸ªå¤æ¬ãåªè¦å建å¤ä»½èç¹å¹¶é ç½®ä¸ä¸ªç¸åçæ¬å°å¤çå¨å³å¯ã</para> + <para/> + <section> + <title>é群æ¶æ¯ç»çæ佳使ç¨æ¯ä¾</title> + <para>ä¸é¢æ¯ä¸äºå¾å¥½ç建议ï¼<orderedlist> + <listitem> + <para>å°½å¯è½ä½¿æ¥æ¶è åååå¸å¨ä¸åçèç¹ä¸ãç±äºæ¶æ¯ç»çæ¶æ¯æ»æ¯ä¼ éå°åä¸ä¸ªéåçåä¸ä¸ªæ¥æ¶è ï¼ + å¦æä½ ç»å¸¸æ§å°å建ä¸å ³éæ¥æ¶è ï¼å°±å¯è½åºç°æ¶æ¯ç±äºæ²¡ææ¥æ¶è èä¼ éä¸åºå»ï¼é ææ¶æ¯å¨éåä¸ + ä¸æ积累çæ åµãå æ¤ï¼å°½éè¦é¿å å ³éæ¥æ¶è ï¼æè ç¡®ä¿æ足å¤æ°éçæ¥æ¶è ãä¾å¦ï¼å¦æä½ çé群 + æ3个èç¹ï¼é£ä¹å°±å建3个æ¥æ¶è ã</para> + </listitem> + <listitem> + <para>å°½å¯è½ä½¿ç¨æä¹ åéåãå¦ææ¶æ¯ç»çæ¶æ¯ä¸ä¸ä¸ªéåç»å®ï¼ä¸æ¦è¿ä¸ªéå被å é¤ï¼å ¶å®èç¹å¯è½ä»ç¶ + å°è¯åè¿ä¸ªå·²å é¤çéåè·¯ç±æ¶æ¯ã为é¿å è¿ç§æ åµï¼è¦ç¡®ä¿è¿ä¸ªéåç±åéæ¶æ¯çä¼è¯æ¥å é¤ãè¿æ ·å¦æ + ä¸ä¸ä¸ªæ¶æ¯ååºååç°åæ¥çéå被å é¤ï¼æ°çè·¯ç±å»ºè®®å°±ä¼æåºãå¦å¤ä¸ç§æ¹æ¡æ¯ä½ å¯ä»¥éæ°ä½¿ç¨ä¸ä¸ªä¸ + åçç»IDã</para> + </listitem> + <listitem> + <para>ä¸å®è¦ç¡®ä¿æ¬å°çæ¶æ¯ç»å¤çå¨æå¤ä»½ãè¿æ ·å¨ææ éæ¶æ¶æ¯ç»ä»ç¶å¯ä»¥æ£å¸¸å·¥ä½ã</para> + </listitem> + </orderedlist></para> + </section> + <section> + <title>é群æ¶æ¯ç»ä¾å</title> + <para>åè§<xref linkend="examples.clustered.grouping"/>ï¼è¿ä¸ªä¾åç»åºäºå¦ä½å¨HornetQé群ä¸é ç½®æ¶æ¯ç»ã</para> + </section> + </section> +</chapter>