网站开发毕业设计评审表,做app和做网站的区别,淘客网站如何做推广,可以免费打开网站的软件下载activemq主从配置介绍 ActiveMQ代理往往是企业中消息传递基础结构的核心部分。 此消息传递基础结构的高度可用性和可伸缩性至关重要。 请阅读此链接 #xff0c;以了解有关创建经纪人网络以支持各种用例的更多信息。 ActiveMQ的流行用例之一是带有共享数据库的主/从配置。 使用… activemq主从配置 介绍 ActiveMQ代理往往是企业中消息传递基础结构的核心部分。 此消息传递基础结构的高度可用性和可伸缩性至关重要。 请阅读此链接 以了解有关创建经纪人网络以支持各种用例的更多信息。 ActiveMQ的流行用例之一是带有共享数据库的主/从配置。 使用此配置时消息使用者和生产者可以在不中断的情况下运行因为它们使用具有故障转移协议的ActiveMQ的连接工厂。 当从属ActiveMQ节点接管成为主节点时故障转移协议使使用者和生产者不必处理任何潜在的停机时间或应用程序级别的重新连接逻辑如果当前主节点由于任何原因而发生故障该故障转移协议就会发生。 我必须警告不得使用此配置来掩盖掉主节点的任何问题。 我们应该消除导致计划外主节点中断的任何原因。 总览 在此博客中我将演示以下内容 在具有共享的基于KahaDB文件的数据库的主/从配置中运行2个ActiveMQ节点。 将托管在Tomcat实例中的ActiveMQ Web控制台配置为指向群集中的哪个节点为主节点。 故障转移方案。 故障转移忽略的消息发布者和使用者行为。 先决条件 安装ActiveMQ版本5.8.0 从此处下载ActiveMQ版本5.8.0 Web控制台之战 安装Tomcat 7.0.35版-承载ActiveMQ Web控制台应用程序 深潜 我们将在同一台Windows 7计算机上创建一个2节点ActiveMQ群集。 我们将需要配置端口TCP和JMX以便没有冲突。 ActiveMQ提供了一个名为“ activemq-admin.bat”的脚本该脚本可帮助使用相同的二进制文件类似于Tomcat运行ActiveMQ的多个实例。 让我们继续创建broker-1和broker-2实例。 命令 activemq-admin创建DIR-for-ActiveMQ-node C:\apache-activemq-5.8.0\binactivemq-admin create ..\cluster\broker-1Java Runtime: Sun Microsystems Inc. 1.6.0_31 C:\Program Files\Java\jdk1.6.0_31\jreHeap sizes: current125632k free124976k max1864192kJVM args: -Dactivemq.classpathC:\apache-activemq-5.8.0\bin\..\conf;C:\apache-activemq-5.8.0\bin\..\data; -Dactivemq.homeC:\apache-activemq-5.8.0
\bin\.. -Dactivemq.baseC:\apache-activemq-5.8.0\bin\.. -Dactivemq.dataC:\apache-activemq-5.8.0\bin\..\data -Djava.io.tmpdirC:\apache-activemq-5.8.0
\bin\..\data\tmp -Dactivemq.confC:\apache-activemq-5.8.0\bin\..\conf
Extensions classpath:[C:\apache-activemq-5.8.0\bin\..\lib,C:\apache-activemq-5.8.0\bin\..\lib\camel,C:\apache-activemq-5.8.0\bin\..\lib\optional,C:\apache-activemq-5.8.0
\bin\..\lib\web,C:\apache-activemq-5.8.0\bin\..\lib\extra]
ACTIVEMQ_HOME: C:\apache-activemq-5.8.0\bin\..
ACTIVEMQ_BASE: C:\apache-activemq-5.8.0\bin\..
ACTIVEMQ_CONF: C:\apache-activemq-5.8.0\bin\..\conf
ACTIVEMQ_DATA: C:\apache-activemq-5.8.0\bin\..\data
Running create broker task...
Creating directory: C:\apache-activemq-5.8.0\cluster\broker-1
Creating directory: C:\apache-activemq-5.8.0\cluster\broker-1\bin
Creating directory: C:\apache-activemq-5.8.0\cluster\broker-1\conf
Creating new file: C:\apache-activemq-5.8.0\cluster\broker-1\bin\broker-1.bat
Creating new file: C:\apache-activemq-5.8.0\cluster\broker-1\bin\broker-1
Copying from: C:\apache-activemq-5.8.0\conf\activemq.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-command.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-command.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-demo.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-demo.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-dynamic-network-broker1.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-dynamic-network-broker1.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-dynamic-network-broker2.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-dynamic-network-broker2.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-jdbc.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-jdbc.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-scalability.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-scalability.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-security.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-security.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-specjms.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-specjms.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-static-network-broker1.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-static-network-broker1.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-static-network-broker2.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-static-network-broker2.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-stomp.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-stomp.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-throughput.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\activemq-throughput.xml
Copying from: C:\apache-activemq-5.8.0\conf\broker-localhost.certto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\broker-localhost.cert
Copying from: C:\apache-activemq-5.8.0\conf\broker.ksto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\broker.ks
Copying from: C:\apache-activemq-5.8.0\conf\broker.tsto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\broker.ts
Copying from: C:\apache-activemq-5.8.0\conf\camel.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\camel.xml
Copying from: C:\apache-activemq-5.8.0\conf\client.ksto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\client.ks
Copying from: C:\apache-activemq-5.8.0\conf\client.tsto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\client.ts
Copying from: C:\apache-activemq-5.8.0\conf\credentials-enc.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\credentials-enc.properties
Copying from: C:\apache-activemq-5.8.0\conf\credentials.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\credentials.properties
Copying from: C:\apache-activemq-5.8.0\conf\jetty-demo.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\jetty-demo.xml
Copying from: C:\apache-activemq-5.8.0\conf\jetty-realm.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\jetty-realm.properties
Copying from: C:\apache-activemq-5.8.0\conf\jetty.xmlto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\jetty.xml
Copying from: C:\apache-activemq-5.8.0\conf\jmx.accessto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\jmx.access
Copying from: C:\apache-activemq-5.8.0\conf\jmx.passwordto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\jmx.password
Copying from: C:\apache-activemq-5.8.0\conf\log4j.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\log4j.properties
Copying from: C:\apache-activemq-5.8.0\conf\logging.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-1\conf\logging.properties 现在让我们创建broker-2实例… C:\apache-activemq-5.8.0\binactivemq-admin create ..\cluster\broker-2Java Runtime: Sun Microsystems Inc. 1.6.0_31 C:\Program Files\Java\jdk1.6.0_31\jreHeap sizes: current125632k free124976k max1864192kJVM args: -Dactivemq.classpathC:\apache-activemq-5.8.0\bin\..\conf;C:\apache-activemq-5.8.0\bin\..\data; -Dactivemq.homeC:\apache-activemq-5.8.0
\bin\.. -Dactivemq.baseC:\apache-activemq-5.8.0\bin\.. -Dactivemq.dataC:\apache-activemq-5.8.0\bin\..\data -Djava.io.tmpdirC:\apache-activemq-5.8.0
\bin\..\data\tmp -Dactivemq.confC:\apache-activemq-5.8.0\bin\..\conf
Extensions classpath:[C:\apache-activemq-5.8.0\bin\..\lib,C:\apache-activemq-5.8.0\bin\..\lib\camel,C:\apache-activemq-5.8.0\bin\..\lib\optional,C:\apache-activemq-5.8.0
\bin\..\lib\web,C:\apache-activemq-5.8.0\bin\..\lib\extra]
ACTIVEMQ_HOME: C:\apache-activemq-5.8.0\bin\..
ACTIVEMQ_BASE: C:\apache-activemq-5.8.0\bin\..
ACTIVEMQ_CONF: C:\apache-activemq-5.8.0\bin\..\conf
ACTIVEMQ_DATA: C:\apache-activemq-5.8.0\bin\..\data
Running create broker task...
Creating directory: C:\apache-activemq-5.8.0\cluster\broker-2
Creating directory: C:\apache-activemq-5.8.0\cluster\broker-2\bin
Creating directory: C:\apache-activemq-5.8.0\cluster\broker-2\conf
Creating new file: C:\apache-activemq-5.8.0\cluster\broker-2\bin\broker-2.bat
Creating new file: C:\apache-activemq-5.8.0\cluster\broker-2\bin\broker-2
Copying from: C:\apache-activemq-5.8.0\conf\activemq.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-command.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-command.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-demo.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-demo.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-dynamic-network-broker1.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-dynamic-network-broker1.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-dynamic-network-broker2.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-dynamic-network-broker2.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-jdbc.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-jdbc.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-scalability.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-scalability.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-security.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-security.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-specjms.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-specjms.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-static-network-broker1.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-static-network-broker1.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-static-network-broker2.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-static-network-broker2.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-stomp.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-stomp.xml
Copying from: C:\apache-activemq-5.8.0\conf\activemq-throughput.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\activemq-throughput.xml
Copying from: C:\apache-activemq-5.8.0\conf\broker-localhost.certto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\broker-localhost.cert
Copying from: C:\apache-activemq-5.8.0\conf\broker.ksto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\broker.ks
Copying from: C:\apache-activemq-5.8.0\conf\broker.tsto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\broker.ts
Copying from: C:\apache-activemq-5.8.0\conf\camel.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\camel.xml
Copying from: C:\apache-activemq-5.8.0\conf\client.ksto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\client.ks
Copying from: C:\apache-activemq-5.8.0\conf\client.tsto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\client.ts
Copying from: C:\apache-activemq-5.8.0\conf\credentials-enc.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\credentials-enc.properties
Copying from: C:\apache-activemq-5.8.0\conf\credentials.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\credentials.properties
Copying from: C:\apache-activemq-5.8.0\conf\jetty-demo.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\jetty-demo.xml
Copying from: C:\apache-activemq-5.8.0\conf\jetty-realm.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\jetty-realm.properties
Copying from: C:\apache-activemq-5.8.0\conf\jetty.xmlto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\jetty.xml
Copying from: C:\apache-activemq-5.8.0\conf\jmx.accessto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\jmx.access
Copying from: C:\apache-activemq-5.8.0\conf\jmx.passwordto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\jmx.password
Copying from: C:\apache-activemq-5.8.0\conf\log4j.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\log4j.properties
Copying from: C:\apache-activemq-5.8.0\conf\logging.propertiesto: C:\apache-activemq-5.8.0\cluster\broker-2\conf\logging.properties 您可能已经注意到上面的以下属性 ACTIVEMQ_BASE: C:\apache-activemq-5.8.0\bin\..
ACTIVEMQ_CONF: C:\apache-activemq-5.8.0\bin\..\conf
ACTIVEMQ_DATA: C:\apache-activemq-5.8.0\bin\..\data 这些属性需要固定因为我们希望ACTIVE-1和Broker-2的ACTIVEMQ_BASE和ACTIVEMQ_CONF有所不同。 我们需要编辑以下文件 C\ apache-activemq-5.8.0 \ cluster \ broker-1 \ bin目录中的broker-1.bat 设置ACTIVEMQ_HOME ” C/apache-activemq-5.8.0” C\ apache-activemq-5.8.0 \ cluster \ broker-2 \ bin目录中的broker-2.bat 设置ACTIVEMQ_HOME ” C/apache-activemq-5.8.0” 您可能会观察到broker-1和broker-2节点共享相同的ACTIVEMQ_DATA文件夹。 由于我们使用内置的KahaDB来保持持久性所以broker-1和broker-2都将共享这一点。 我们需要区分Broker-1和Broker-2的tcp端口还需要启用JMX并配置JMX端口以进行远程监视。 让我们编辑broker-1的activemq.xml来修复tcp端口 transportConnectors!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB --transportConnector nameopenwire uritcp://0.0.0.0:61616?maximumConnections1000wireformat.maxFrameSize104857600/!--transportConnector nameamqp uriamqp://0.0.0.0:5672?maximumConnections1000wireformat.maxFrameSize104857600/--
/transportConnectors 让我们编辑broker-1的activemq.xml以启用JMX监视注意下面的useJMX “ true”属性。 broker xmlnshttp://activemq.apache.org/schema/core brokerNamebroker-1 dataDirectory${activemq.data} useJmxtrue 让我们配置JMX端口 managementContextmanagementContext createConnectortrue connectorPort1099/
/managementContext 对broker-2重复相同的步骤。 将TCP端口设置为61626将JMX端口设置为2099。 启动broker-1。 C:\apache-activemq-5.8.0\cluster\broker-1\binbroker-1.bat
Java Runtime: Sun Microsystems Inc. 1.6.0_31 C:\Program Files\Java\jdk1.6.0_31\jreHeap sizes: current1004928k free994439k max1004928kJVM args: -Dcom.sun.management.jmxremote -Xms1G -Xmx1G -Djava.util.logging.config.filelogging.properties -Dactivemq.classpathC:/apache-activemq-
5.8.0/cluster/broker-1/conf;C:/apache-activemq-5.8.0/cluster/broker-1/conf;C:/apache-activemq-5.8.0/conf; -Dactivemq.homeC:/apache-activemq-5.8.0 -Da
ctivemq.baseC:/apache-activemq-5.8.0/cluster/broker-1 -Dactivemq.confC:/apache-activemq-5.8.0/cluster/broker-1/conf -Dactivemq.dataC:/apache-active
mq-5.8.0\data -Djava.io.tmpdirC:/apache-activemq-5.8.0\data\tmp
Extensions classpath:[C:\apache-activemq-5.8.0\cluster\broker-1\lib,C:\apache-activemq-5.8.0\lib,C:\apache-activemq-5.8.0\cluster\broker-1\lib\camel,C:\apache-activemq-5
.8.0\cluster\broker-1\lib\optional,C:\apache-activemq-5.8.0\cluster\broker-1\lib\web,C:\apache-activemq-5.8.0\cluster\broker-1\lib\extra,C:\apache-act
ivemq-5.8.0\lib\camel,C:\apache-activemq-5.8.0\lib\optional,C:\apache-activemq-5.8.0\lib\web,C:\apache-activemq-5.8.0\lib\extra]
ACTIVEMQ_HOME: C:\apache-activemq-5.8.0
ACTIVEMQ_BASE: C:\apache-activemq-5.8.0\cluster\broker-1
ACTIVEMQ_CONF: C:\apache-activemq-5.8.0\cluster\broker-1\conf
ACTIVEMQ_DATA: C:\apache-activemq-5.8.0\data
Loading message broker from: xbean:activemq.xmlINFO | Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$171060478: startup date [Tue Jul 09 16:59:15 CDT 2013]; root of context hierarchyINFO | PListStore:[C:\apache-activemq-5.8.0\data\broker-1\tmp_storage] startedINFO | Using Persistence Adapter: KahaDBPersistenceAdapter[C:\apache-activemq-5.8.0\data\kahadb]INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmiINFO | KahaDB is version 4INFO | Recovering from the journal ...INFO | Recovery replayed 1 operations from the journal in 0.028 seconds.INFO | Apache ActiveMQ 5.8.0 (broker-1, ID:AKUNTAMU-1-27777-1373407157813-0:1) is startingINFO | Listening for connections at: tcp://AKUNTAMU-1:61616?maximumConnections1000wireformat.maxFrameSize104857600INFO | Connector openwire StartedINFO | Apache ActiveMQ 5.8.0 (broker-1, ID:AKUNTAMU-1-27777-1373407157813-0:1) startedINFO | For help or more information please see: http://activemq.apache.orgWARN | Store limit is 102400 mb, whilst the data directory: C:\apache-activemq-5.8.0\data\kahadb only has 38889 mb of usable space
ERROR | Temporary Store limit is 51200 mb, whilst the temporary data directory: C:\apache-activemq-5.8.0\data\broker-1\tmp_storage only has 38889 mb o
f usable spaceINFO | Web console type: embeddedINFO | ActiveMQ WebConsole initialized.INFO | Initializing Spring FrameworkServlet dispatcherINFO | jolokia-agent: No access restrictor found at classpath:/jolokia-access.xml, access to all MBeans is allowed 启动broker-2。 您将观察到broker-2无法获取该锁因为broker-1已经抓住了它。 broker-2将继续尝试每10秒获取一次锁定。 C:\apache-activemq-5.8.0\cluster\broker-2\binbroker-2.bat
Java Runtime: Sun Microsystems Inc. 1.6.0_31 C:\Program Files\Java\jdk1.6.0_31\jreHeap sizes: current1004928k free994439k max1004928kJVM args: -Dcom.sun.management.jmxremote -Xms1G -Xmx1G -Djava.util.logging.config.filelogging.properties -Dactivemq.classpathC:/apache-activemq-
5.8.0/cluster/broker-2/conf;C:/apache-activemq-5.8.0/cluster/broker-2/conf;C:/apache-activemq-5.8.0/conf; -Dactivemq.homeC:/apache-activemq-5.8.0 -Da
ctivemq.baseC:/apache-activemq-5.8.0/cluster/broker-2 -Dactivemq.confC:/apache-activemq-5.8.0/cluster/broker-2/conf -Dactivemq.dataC:/apache-active
mq-5.8.0\data -Djava.io.tmpdirC:/apache-activemq-5.8.0\data\tmp
Extensions classpath:[C:\apache-activemq-5.8.0\cluster\broker-2\lib,C:\apache-activemq-5.8.0\lib,C:\apache-activemq-5.8.0\cluster\broker-2\lib\camel,C:\apache-activemq-5
.8.0\cluster\broker-2\lib\optional,C:\apache-activemq-5.8.0\cluster\broker-2\lib\web,C:\apache-activemq-5.8.0\cluster\broker-2\lib\extra,C:\apache-act
ivemq-5.8.0\lib\camel,C:\apache-activemq-5.8.0\lib\optional,C:\apache-activemq-5.8.0\lib\web,C:\apache-activemq-5.8.0\lib\extra]
ACTIVEMQ_HOME: C:\apache-activemq-5.8.0
ACTIVEMQ_BASE: C:\apache-activemq-5.8.0\cluster\broker-2
ACTIVEMQ_CONF: C:\apache-activemq-5.8.0\cluster\broker-2\conf
ACTIVEMQ_DATA: C:\apache-activemq-5.8.0\data
Loading message broker from: xbean:activemq.xmlINFO | Refreshing org.apache.activemq.xbean.XBeanBrokerFactory$1420f9c40: startup date [Tue Jul 09 17:02:55 CDT 2013]; root of context hierarchyINFO | PListStore:[C:\apache-activemq-5.8.0\data\broker-2\tmp_storage] startedINFO | Using Persistence Adapter: KahaDBPersistenceAdapter[C:\apache-activemq-5.8.0\data\kahadb]INFO | Database C:\apache-activemq-5.8.0\data\kahadb\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOExceptio
n: File C:\apache-activemq-5.8.0\data\kahadb\lock could not be locked.INFO | JMX consoles can connect to service:jmx:rmi:///jndi/rmi://localhost:2099/jmxrmiINFO | Database C:\apache-activemq-5.8.0\data\kahadb\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOExceptio
n: File C:\apache-activemq-5.8.0\data\kahadb\lock could not be locked.INFO | Database C:\apache-activemq-5.8.0\data\kahadb\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOExceptio
n: File C:\apache-activemq-5.8.0\data\kahadb\lock could not be locked. 现在让我们配置ActiveMQ Web控制台。 默认情况下ActiveMQ分发包含管理Web控制台但是在“主/从”配置中未知哪个节点是主节点。 因此使用嵌入式Web控制台没有任何意义。 因此最好在ActiveMQ节点之外安装ActiveMQ Web控制台。 通过在每个ActiveMQ节点的conf目录中的activemq.xml中注释以下行可以禁用每个节点中的嵌入式ActiveMQ Web控制台。 !--import resourcejetty.xml/-- 对于我们的示例我们将在Tomcat容器中部署ActiveMQ Web控制台Web应用程序然后将ActiveMQ Web控制台应用程序配置为智能地指向ActiveMQ群集中的主节点。 因此让我们将activemq-web-console-5.8.0.war复制到Tomcat的webapps目录中。 将以下行添加到catalina.bat set JAVA_OPTS-Dwebconsole.typeproperties -Dwebconsole.jms.urlfailover:(tcp://localhost:61616,tcp://localhost:61626) -Dwebconsole.jmx.urlservice:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi,service:jmx:rmi:///jndi/rmi://localhost:2099/jmxrmi 现在让我们启动Tomcat。 C:\apache-tomcat-7.0.35\bin.\catalina.bat run
Using CATALINA_BASE: C:\apache-tomcat-7.0.35
Using CATALINA_HOME: C:\apache-tomcat-7.0.35
Using CATALINA_TMPDIR: C:\apache-tomcat-7.0.35\temp
Using JRE_HOME: C:\Program Files\Java\jdk1.6.0_31
Using CLASSPATH: C:\apache-tomcat-7.0.35\bin\bootstrap.jar;C:\apache-tomcat-7.0.35\bin\tomcat-juli.jar
Jul 9, 2013 5:28:08 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [http-bio-8080]
Jul 9, 2013 5:28:08 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler [ajp-bio-8009]
Jul 9, 2013 5:28:08 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 635 ms
Jul 9, 2013 5:28:08 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jul 9, 2013 5:28:08 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.35
Jul 9, 2013 5:28:08 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive C:\apache-tomcat-7.0.35\webapps\activemq-web-console-5.8.0.war
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/apache-tomcat-7.0.35/webapps/activemq-web-console-5.8.0/WEB-INF/lib/activemq-all-5.8.0.jar!/org/slf4j/impl/Stati
cLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/apache-tomcat-7.0.35/webapps/activemq-web-console-5.8.0/WEB-INF/lib/slf4j-log4j12-1.6.6.jar!/org/slf4j/impl/Stat
icLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2013-07-09 17:28:13,389 [ost-startStop-1] INFO WebConsoleStarter - Web console type: properties
2013-07-09 17:28:13,960 [ost-startStop-1] INFO WebConsoleStarter - ActiveMQ WebConsole initialized.
2013-07-09 17:28:14,095 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/createDestination.action] onto handler /createDest
ination.action
2013-07-09 17:28:14,096 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/deleteDestination.action] onto handler /deleteDest
ination.action
2013-07-09 17:28:14,097 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/createSubscriber.action] onto handler /createSubsc
riber.action
2013-07-09 17:28:14,098 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/deleteSubscriber.action] onto handler /deleteSubsc
riber.action
2013-07-09 17:28:14,099 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/sendMessage.action] onto handler /sendMessage.acti
on
2013-07-09 17:28:14,100 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/purgeDestination.action] onto handler /purgeDestin
ation.action
2013-07-09 17:28:14,101 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/deleteMessage.action] onto handler /deleteMessage.
action
2013-07-09 17:28:14,103 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/copyMessage.action] onto handler /copyMessage.acti
on
2013-07-09 17:28:14,104 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/moveMessage.action] onto handler /moveMessage.acti
on
2013-07-09 17:28:14,105 [ost-startStop-1] INFO ndingBeanNameUrlHandlerMapping - Mapped URL path [/deleteJob.action] onto handler /deleteJob.action
Jul 9, 2013 5:28:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.35\webapps\docs
Jul 9, 2013 5:28:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.35\webapps\examples
Jul 9, 2013 5:28:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.35\webapps\host-manager
Jul 9, 2013 5:28:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.35\webapps\manager
Jul 9, 2013 5:28:14 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory C:\apache-tomcat-7.0.35\webapps\ROOT
Jul 9, 2013 5:28:14 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [http-bio-8080]
Jul 9, 2013 5:28:14 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler [ajp-bio-8009]
Jul 9, 2013 5:28:14 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 6642 ms 让我们访问Web控制台http// localhost8080 / activemq-web-console-5.8.0 如果出现提示请使用admin / admin作为用户名/密码。 这些是默认的安全设置。 请参考conf目录中的jetty.xml和jetty-realm.properties。 如上所示“经纪人-1”是当前的主经纪人。 现在如果要关闭broker-1。 在运行broker-1的Terminal窗口中按Control C您会注意到broker-2获得了锁并成为了主服务器。 INFO | Database C:\apache-activemq-5.8.0\data\kahadb\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOExceptio
n: File C:\apache-activemq-5.8.0\data\kahadb\lock could not be locked.INFO | Database C:\apache-activemq-5.8.0\data\kahadb\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOExceptio
n: File C:\apache-activemq-5.8.0\data\kahadb\lock could not be locked.INFO | Database C:\apache-activemq-5.8.0\data\kahadb\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOExceptio
n: File C:\apache-activemq-5.8.0\data\kahadb\lock could not be locked.INFO | Database C:\apache-activemq-5.8.0\data\kahadb\lock is locked... waiting 10 seconds for the database to be unlocked. Reason: java.io.IOExceptio
n: File C:\apache-activemq-5.8.0\data\kahadb\lock could not be locked.INFO | KahaDB is version 4INFO | Recovering from the journal ...INFO | Recovery replayed 2 operations from the journal in 0.022 seconds.INFO | Apache ActiveMQ 5.8.0 (broker-2, ID:AKUNTAMU-1-28147-1373409767675-0:1) is startingINFO | Listening for connections at: tcp://AKUNTAMU-1:61626?maximumConnections1000wireformat.maxFrameSize104857600INFO | Connector openwire StartedINFO | Apache ActiveMQ 5.8.0 (broker-2, ID:AKUNTAMU-1-28147-1373409767675-0:1) startedINFO | For help or more information please see: http://activemq.apache.orgWARN | Store limit is 102400 mb, whilst the data directory: C:\apache-activemq-5.8.0\data\kahadb only has 38888 mb of usable space
ERROR | Temporary Store limit is 51200 mb, whilst the temporary data directory: C:\apache-activemq-5.8.0\data\broker-2\tmp_storage only has 38888 mb o
f usable spaceINFO | Web console type: embeddedINFO | ActiveMQ WebConsole initialized.INFO | Initializing Spring FrameworkServlet dispatcherINFO | jolokia-agent: No access restrictor found at classpath:/jolokia-access.xml, access to all MBeans is allowed 让我们刷新Web控制台 您可能会看到现在主节点是broker-2。 现在我们已经看到在故障转移场景中使用外部Web控制台在节点之间进行无缝切换让我们从消息生产者和使用者的角度来看相同的情况。 我将使用简单的消息发布器将50条持久消息发布到队列中并让异步使用者接收这50条消息。 我将在发送消息时引入一些延迟以便我们可以将主服务器断开几次并创建一些故障转移方案。 目的是了解故障转移协议如何使节点故障转移完全透明从而使应用程序不必处理任何重新连接逻辑。 这是使用ActiveMQConnectionFactory和故障转移协议的简单生产者。 请注意下面的代码片段中突出显示的故障转移协议URL。 package com.akuntamukkala.amqms;import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.log4j.Logger;public class Producer {private static final Logger log Logger.getLogger(Producer.class);public static void main(String[] args) throws Exception {// Create a ConnectionFactoryActiveMQConnectionFactory connectionFactory new ActiveMQConnectionFactory(failover:(tcp://localhost:61616,tcp://localhost:61626));for (int i 0; i 50; i) {log.info(Establishing connection);// Create a ConnectionConnection connection connectionFactory.createConnection();connection.start();log.info(Connection established);// Create a SessionSession session connection.createSession(false,Session.AUTO_ACKNOWLEDGE);// Create the destination (Topic or Queue)Destination destination session.createQueue(TEST.FOO);// Create a MessageProducer from the Session to the Topic or QueueMessageProducer producer session.createProducer(destination);producer.setDeliveryMode(DeliveryMode.PERSISTENT);// Create a messagesString text Message Counter : i;TextMessage message session.createTextMessage(text);log.info(Sending message : text);producer.send(message);log.info(Sent message : text);// Clean upsession.close();connection.close();Thread.sleep(1000);}}
} 这是我几次关闭Broker-1和Broker-2时执行的日志。 2013-07-10 11:26:32 INFO Producer:25 - Establishing connection
2013-07-10 11:26:33 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:33 INFO Producer:30 - Connection established
2013-07-10 11:26:33 INFO Producer:47 - Sending message : Message Counter : 0
2013-07-10 11:26:33 INFO Producer:49 - Sent message : Message Counter : 0
2013-07-10 11:26:34 INFO Producer:25 - Establishing connection
2013-07-10 11:26:35 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:35 INFO Producer:30 - Connection established
2013-07-10 11:26:35 INFO Producer:47 - Sending message : Message Counter : 1
2013-07-10 11:26:35 INFO Producer:49 - Sent message : Message Counter : 1
2013-07-10 11:26:35 INFO Producer:25 - Establishing connection
2013-07-10 11:26:36 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:36 INFO Producer:30 - Connection established
2013-07-10 11:26:36 INFO Producer:47 - Sending message : Message Counter : 2
2013-07-10 11:26:36 INFO Producer:49 - Sent message : Message Counter : 2
2013-07-10 11:26:37 INFO Producer:25 - Establishing connection
2013-07-10 11:26:37 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:37 INFO Producer:30 - Connection established
2013-07-10 11:26:37 INFO Producer:47 - Sending message : Message Counter : 3
2013-07-10 11:26:37 INFO Producer:49 - Sent message : Message Counter : 3
2013-07-10 11:26:37 INFO Producer:25 - Establishing connection
2013-07-10 11:26:38 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:38 INFO Producer:30 - Connection established
2013-07-10 11:26:38 INFO Producer:47 - Sending message : Message Counter : 4
2013-07-10 11:26:38 INFO Producer:49 - Sent message : Message Counter : 4
2013-07-10 11:26:39 INFO Producer:25 - Establishing connection
2013-07-10 11:26:39 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:39 INFO Producer:30 - Connection established
2013-07-10 11:26:39 INFO Producer:47 - Sending message : Message Counter : 5
2013-07-10 11:26:39 INFO Producer:49 - Sent message : Message Counter : 5
2013-07-10 11:26:39 INFO Producer:25 - Establishing connection
2013-07-10 11:26:39 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:39 INFO Producer:30 - Connection established
2013-07-10 11:26:39 INFO Producer:47 - Sending message : Message Counter : 6
2013-07-10 11:26:39 INFO Producer:49 - Sent message : Message Counter : 6
2013-07-10 11:26:40 INFO Producer:25 - Establishing connection
2013-07-10 11:26:40 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:40 INFO Producer:30 - Connection established
2013-07-10 11:26:40 INFO Producer:47 - Sending message : Message Counter : 7
2013-07-10 11:26:40 INFO Producer:49 - Sent message : Message Counter : 7
2013-07-10 11:26:40 INFO Producer:25 - Establishing connection
2013-07-10 11:26:40 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:40 INFO Producer:30 - Connection established
2013-07-10 11:26:40 INFO Producer:47 - Sending message : Message Counter : 8
2013-07-10 11:26:40 INFO Producer:49 - Sent message : Message Counter : 8
2013-07-10 11:26:41 INFO Producer:25 - Establishing connection
2013-07-10 11:26:41 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:41 INFO Producer:30 - Connection established
2013-07-10 11:26:41 INFO Producer:47 - Sending message : Message Counter : 9
2013-07-10 11:26:41 INFO Producer:49 - Sent message : Message Counter : 9
2013-07-10 11:26:41 INFO Producer:25 - Establishing connection
2013-07-10 11:26:41 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:41 INFO Producer:30 - Connection established
2013-07-10 11:26:41 INFO Producer:47 - Sending message : Message Counter : 10
2013-07-10 11:26:41 INFO Producer:49 - Sent message : Message Counter : 10
2013-07-10 11:26:42 INFO Producer:25 - Establishing connection
2013-07-10 11:26:43 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:43 INFO Producer:30 - Connection established
2013-07-10 11:26:43 INFO Producer:47 - Sending message : Message Counter : 11
2013-07-10 11:26:43 INFO Producer:49 - Sent message : Message Counter : 11
2013-07-10 11:26:43 INFO Producer:25 - Establishing connection
2013-07-10 11:26:43 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:26:43 WARN FailoverTransport:255 - Transport (tcp://127.0.0.1:61616) failed, reason: java.net.SocketException: Software caused connection abort: recv failed, attempting to automatically reconnect
2013-07-10 11:26:50 INFO FailoverTransport:1032 - Successfully reconnected to tcp://localhost:61626
2013-07-10 11:26:50 INFO Producer:30 - Connection established
2013-07-10 11:26:50 INFO Producer:47 - Sending message : Message Counter : 12
2013-07-10 11:26:50 INFO Producer:49 - Sent message : Message Counter : 12
2013-07-10 11:26:51 INFO Producer:25 - Establishing connection
2013-07-10 11:26:52 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:26:52 INFO Producer:30 - Connection established
2013-07-10 11:26:52 INFO Producer:47 - Sending message : Message Counter : 13
2013-07-10 11:26:52 INFO Producer:49 - Sent message : Message Counter : 13
2013-07-10 11:26:52 INFO Producer:25 - Establishing connection
2013-07-10 11:26:53 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:26:53 INFO Producer:30 - Connection established
2013-07-10 11:26:53 INFO Producer:47 - Sending message : Message Counter : 14
2013-07-10 11:26:53 INFO Producer:49 - Sent message : Message Counter : 14
2013-07-10 11:26:54 INFO Producer:25 - Establishing connection
2013-07-10 11:26:54 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:26:54 INFO Producer:30 - Connection established
2013-07-10 11:26:54 INFO Producer:47 - Sending message : Message Counter : 15
2013-07-10 11:26:54 INFO Producer:49 - Sent message : Message Counter : 15
2013-07-10 11:26:54 INFO Producer:25 - Establishing connection
2013-07-10 11:26:55 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:26:55 INFO Producer:30 - Connection established
2013-07-10 11:26:55 INFO Producer:47 - Sending message : Message Counter : 16
2013-07-10 11:26:55 INFO Producer:49 - Sent message : Message Counter : 16
2013-07-10 11:26:56 INFO Producer:25 - Establishing connection
2013-07-10 11:26:57 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:26:57 INFO Producer:30 - Connection established
2013-07-10 11:26:57 INFO Producer:47 - Sending message : Message Counter : 17
2013-07-10 11:26:57 INFO Producer:49 - Sent message : Message Counter : 17
2013-07-10 11:26:57 INFO Producer:25 - Establishing connection
2013-07-10 11:26:58 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:26:58 INFO Producer:30 - Connection established
2013-07-10 11:26:58 INFO Producer:47 - Sending message : Message Counter : 18
2013-07-10 11:26:58 INFO Producer:49 - Sent message : Message Counter : 18
2013-07-10 11:26:59 INFO Producer:25 - Establishing connection
2013-07-10 11:26:59 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:26:59 INFO Producer:30 - Connection established
2013-07-10 11:26:59 INFO Producer:47 - Sending message : Message Counter : 19
2013-07-10 11:26:59 INFO Producer:49 - Sent message : Message Counter : 19
2013-07-10 11:26:59 INFO Producer:25 - Establishing connection
2013-07-10 11:26:59 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:26:59 INFO Producer:30 - Connection established
2013-07-10 11:26:59 INFO Producer:47 - Sending message : Message Counter : 20
2013-07-10 11:26:59 INFO Producer:49 - Sent message : Message Counter : 20
2013-07-10 11:27:00 INFO Producer:25 - Establishing connection
2013-07-10 11:27:01 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:01 INFO Producer:30 - Connection established
2013-07-10 11:27:01 INFO Producer:47 - Sending message : Message Counter : 21
2013-07-10 11:27:01 INFO Producer:49 - Sent message : Message Counter : 21
2013-07-10 11:27:01 INFO Producer:25 - Establishing connection
2013-07-10 11:27:01 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:01 INFO Producer:30 - Connection established
2013-07-10 11:27:01 INFO Producer:47 - Sending message : Message Counter : 22
2013-07-10 11:27:01 INFO Producer:49 - Sent message : Message Counter : 22
2013-07-10 11:27:02 INFO Producer:25 - Establishing connection
2013-07-10 11:27:02 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:02 INFO Producer:30 - Connection established
2013-07-10 11:27:02 INFO Producer:47 - Sending message : Message Counter : 23
2013-07-10 11:27:02 INFO Producer:49 - Sent message : Message Counter : 23
2013-07-10 11:27:02 INFO Producer:25 - Establishing connection
2013-07-10 11:27:02 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:02 INFO Producer:30 - Connection established
2013-07-10 11:27:02 INFO Producer:47 - Sending message : Message Counter : 24
2013-07-10 11:27:02 INFO Producer:49 - Sent message : Message Counter : 24
2013-07-10 11:27:03 INFO Producer:25 - Establishing connection
2013-07-10 11:27:03 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:03 INFO Producer:30 - Connection established
2013-07-10 11:27:03 INFO Producer:47 - Sending message : Message Counter : 25
2013-07-10 11:27:03 INFO Producer:49 - Sent message : Message Counter : 25
2013-07-10 11:27:03 INFO Producer:25 - Establishing connection
2013-07-10 11:27:03 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:03 INFO Producer:30 - Connection established
2013-07-10 11:27:03 INFO Producer:47 - Sending message : Message Counter : 26
2013-07-10 11:27:03 INFO Producer:49 - Sent message : Message Counter : 26
2013-07-10 11:27:04 INFO Producer:25 - Establishing connection
2013-07-10 11:27:04 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:06 WARN FailoverTransport:255 - Transport (tcp://127.0.0.1:61626) failed, reason: java.net.SocketException: Software caused connection abort: recv failed, attempting to automatically reconnect
2013-07-10 11:27:15 INFO FailoverTransport:1032 - Successfully reconnected to tcp://localhost:61616
2013-07-10 11:27:15 INFO Producer:30 - Connection established
2013-07-10 11:27:15 INFO Producer:47 - Sending message : Message Counter : 27
2013-07-10 11:27:15 INFO Producer:49 - Sent message : Message Counter : 27
2013-07-10 11:27:16 INFO Producer:25 - Establishing connection
2013-07-10 11:27:17 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:17 INFO Producer:30 - Connection established
2013-07-10 11:27:17 INFO Producer:47 - Sending message : Message Counter : 28
2013-07-10 11:27:17 INFO Producer:49 - Sent message : Message Counter : 28
2013-07-10 11:27:17 INFO Producer:25 - Establishing connection
2013-07-10 11:27:18 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:18 INFO Producer:30 - Connection established
2013-07-10 11:27:18 INFO Producer:47 - Sending message : Message Counter : 29
2013-07-10 11:27:18 INFO Producer:49 - Sent message : Message Counter : 29
2013-07-10 11:27:19 INFO Producer:25 - Establishing connection
2013-07-10 11:27:20 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:20 INFO Producer:30 - Connection established
2013-07-10 11:27:20 INFO Producer:47 - Sending message : Message Counter : 30
2013-07-10 11:27:20 INFO Producer:49 - Sent message : Message Counter : 30
2013-07-10 11:27:20 INFO Producer:25 - Establishing connection
2013-07-10 11:27:20 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:20 INFO Producer:30 - Connection established
2013-07-10 11:27:20 INFO Producer:47 - Sending message : Message Counter : 31
2013-07-10 11:27:20 INFO Producer:49 - Sent message : Message Counter : 31
2013-07-10 11:27:21 INFO Producer:25 - Establishing connection
2013-07-10 11:27:22 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:22 INFO Producer:30 - Connection established
2013-07-10 11:27:22 INFO Producer:47 - Sending message : Message Counter : 32
2013-07-10 11:27:22 INFO Producer:49 - Sent message : Message Counter : 32
2013-07-10 11:27:22 INFO Producer:25 - Establishing connection
2013-07-10 11:27:22 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:22 INFO Producer:30 - Connection established
2013-07-10 11:27:22 INFO Producer:47 - Sending message : Message Counter : 33
2013-07-10 11:27:22 INFO Producer:49 - Sent message : Message Counter : 33
2013-07-10 11:27:23 INFO Producer:25 - Establishing connection
2013-07-10 11:27:23 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:23 INFO Producer:30 - Connection established
2013-07-10 11:27:23 INFO Producer:47 - Sending message : Message Counter : 34
2013-07-10 11:27:23 INFO Producer:49 - Sent message : Message Counter : 34
2013-07-10 11:27:23 INFO Producer:25 - Establishing connection
2013-07-10 11:27:24 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:24 INFO Producer:30 - Connection established
2013-07-10 11:27:24 INFO Producer:47 - Sending message : Message Counter : 35
2013-07-10 11:27:24 INFO Producer:49 - Sent message : Message Counter : 35
2013-07-10 11:27:25 INFO Producer:25 - Establishing connection
2013-07-10 11:27:27 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:27 INFO Producer:30 - Connection established
2013-07-10 11:27:27 INFO Producer:47 - Sending message : Message Counter : 36
2013-07-10 11:27:27 INFO Producer:49 - Sent message : Message Counter : 36
2013-07-10 11:27:27 INFO Producer:25 - Establishing connection
2013-07-10 11:27:28 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:28 INFO Producer:30 - Connection established
2013-07-10 11:27:28 INFO Producer:47 - Sending message : Message Counter : 37
2013-07-10 11:27:28 INFO Producer:49 - Sent message : Message Counter : 37
2013-07-10 11:27:29 INFO Producer:25 - Establishing connection
2013-07-10 11:27:30 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:30 INFO Producer:30 - Connection established
2013-07-10 11:27:30 INFO Producer:47 - Sending message : Message Counter : 38
2013-07-10 11:27:30 INFO Producer:49 - Sent message : Message Counter : 38
2013-07-10 11:27:30 INFO Producer:25 - Establishing connection
2013-07-10 11:27:31 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:27:33 WARN FailoverTransport:255 - Transport (tcp://127.0.0.1:61616) failed, reason: java.net.SocketException: Software caused connection abort: recv failed, attempting to automatically reconnect
2013-07-10 11:27:38 INFO FailoverTransport:1032 - Successfully reconnected to tcp://localhost:61626
2013-07-10 11:27:38 INFO Producer:30 - Connection established
2013-07-10 11:27:38 INFO Producer:47 - Sending message : Message Counter : 39
2013-07-10 11:27:38 INFO Producer:49 - Sent message : Message Counter : 39
2013-07-10 11:27:39 INFO Producer:25 - Establishing connection
2013-07-10 11:27:39 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:39 INFO Producer:30 - Connection established
2013-07-10 11:27:39 INFO Producer:47 - Sending message : Message Counter : 40
2013-07-10 11:27:39 INFO Producer:49 - Sent message : Message Counter : 40
2013-07-10 11:27:39 INFO Producer:25 - Establishing connection
2013-07-10 11:27:40 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:40 INFO Producer:30 - Connection established
2013-07-10 11:27:40 INFO Producer:47 - Sending message : Message Counter : 41
2013-07-10 11:27:40 INFO Producer:49 - Sent message : Message Counter : 41
2013-07-10 11:27:41 INFO Producer:25 - Establishing connection
2013-07-10 11:27:42 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:42 INFO Producer:30 - Connection established
2013-07-10 11:27:42 INFO Producer:47 - Sending message : Message Counter : 42
2013-07-10 11:27:42 INFO Producer:49 - Sent message : Message Counter : 42
2013-07-10 11:27:42 INFO Producer:25 - Establishing connection
2013-07-10 11:27:42 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:42 INFO Producer:30 - Connection established
2013-07-10 11:27:42 INFO Producer:47 - Sending message : Message Counter : 43
2013-07-10 11:27:42 INFO Producer:49 - Sent message : Message Counter : 43
2013-07-10 11:27:43 INFO Producer:25 - Establishing connection
2013-07-10 11:27:44 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:44 INFO Producer:30 - Connection established
2013-07-10 11:27:44 INFO Producer:47 - Sending message : Message Counter : 44
2013-07-10 11:27:44 INFO Producer:49 - Sent message : Message Counter : 44
2013-07-10 11:27:44 INFO Producer:25 - Establishing connection
2013-07-10 11:27:45 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:45 INFO Producer:30 - Connection established
2013-07-10 11:27:45 INFO Producer:47 - Sending message : Message Counter : 45
2013-07-10 11:27:45 INFO Producer:49 - Sent message : Message Counter : 45
2013-07-10 11:27:46 INFO Producer:25 - Establishing connection
2013-07-10 11:27:47 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:47 INFO Producer:30 - Connection established
2013-07-10 11:27:47 INFO Producer:47 - Sending message : Message Counter : 46
2013-07-10 11:27:47 INFO Producer:49 - Sent message : Message Counter : 46
2013-07-10 11:27:48 INFO Producer:25 - Establishing connection
2013-07-10 11:27:48 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:48 INFO Producer:30 - Connection established
2013-07-10 11:27:48 INFO Producer:47 - Sending message : Message Counter : 47
2013-07-10 11:27:48 INFO Producer:49 - Sent message : Message Counter : 47
2013-07-10 11:27:48 INFO Producer:25 - Establishing connection
2013-07-10 11:27:49 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:49 INFO Producer:30 - Connection established
2013-07-10 11:27:49 INFO Producer:47 - Sending message : Message Counter : 48
2013-07-10 11:27:49 INFO Producer:49 - Sent message : Message Counter : 48
2013-07-10 11:27:50 INFO Producer:25 - Establishing connection
2013-07-10 11:27:51 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61626
2013-07-10 11:27:51 INFO Producer:30 - Connection established
2013-07-10 11:27:51 INFO Producer:47 - Sending message : Message Counter : 49
2013-07-10 11:27:51 INFO Producer:49 - Sent message : Message Counter : 49 这是Web控制台显示排队的50条消息。 请勿在上面的屏幕截图中困扰#Messages Enqueued 0。 此计数表示自此节点启动以来入队的消息数。 由于我已经在50条消息入队后重新启动了该节点因此计数显示为0。 现在让我们尝试使用异步使用者使用这些消息这些使用者使用具有故障转移协议的ActiveMQ连接工厂。 这是使用故障转移协议的ActiveMQConnectionFactory的简单异步使用者。 package com.akuntamukkala.amqms;import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.log4j.Logger;public class Consumer implements MessageListener {private static final Logger log Logger.getLogger(Consumer.class);public static void main(String[] args) throws Exception {ActiveMQConnectionFactory connectionFactory new ActiveMQConnectionFactory(failover:(tcp://localhost:61616,tcp://localhost:61626));// Create a ConnectionConnection connection connectionFactory.createConnection();connection.start();// Create a SessionSession session connection.createSession(false,Session.AUTO_ACKNOWLEDGE);// Create the destination (Topic or Queue)Destination destination session.createQueue(TEST.FOO);// Create a MessageConsumer from the Session to the QueueMessageConsumer consumer session.createConsumer(destination);consumer.setMessageListener(new Consumer()); // asynchronous listenerThread.sleep(120000); // long wait to keep program runningconsumer.close();session.close();connection.close();}/*** asynchronous message listener*/public void onMessage(Message message) {try {log.info(((TextMessage) message).getText());Thread.sleep(500);} catch (JMSException e) {log.error(e);} catch (InterruptedException e) {log.error(e);}}} 这是执行的日志。 我在日志中明显地切换了主节点几次。 2013-07-10 11:46:01 INFO FailoverTransport:1030 - Successfully connected to tcp://localhost:61616
2013-07-10 11:46:01 INFO Consumer:49 - Message Counter : 0
2013-07-10 11:46:02 INFO Consumer:49 - Message Counter : 1
2013-07-10 11:46:02 INFO Consumer:49 - Message Counter : 2
2013-07-10 11:46:03 INFO Consumer:49 - Message Counter : 3
2013-07-10 11:46:03 INFO Consumer:49 - Message Counter : 4
2013-07-10 11:46:04 INFO Consumer:49 - Message Counter : 5
2013-07-10 11:46:04 INFO Consumer:49 - Message Counter : 6
2013-07-10 11:46:05 INFO Consumer:49 - Message Counter : 7
2013-07-10 11:46:05 INFO Consumer:49 - Message Counter : 8
2013-07-10 11:46:06 INFO Consumer:49 - Message Counter : 9
2013-07-10 11:46:06 INFO Consumer:49 - Message Counter : 10
2013-07-10 11:46:07 INFO Consumer:49 - Message Counter : 11
2013-07-10 11:46:07 WARN FailoverTransport:255 - Transport (tcp://127.0.0.1:61616) failed, reason: java.io.EOFException, attempting to automatically reconnect
2013-07-10 11:46:18 INFO FailoverTransport:1032 - Successfully reconnected to tcp://localhost:61626
2013-07-10 11:46:18 WARN ActiveMQMessageConsumer:1348 - Duplicate dispatch on connection: ID:AKUNTAMU-1-2141-1373474760280-1:1 to consumer: ID:AKUNTAMU-1-2141-1373474760280-1:1:1:1, ignoring (auto acking) duplicate: MessageDispatch {commandId 0, responseRequired false, consumerId ID:AKUNTAMU-1-2141-1373474760280-1:1:1:1, destination queue://TEST.FOO, message ActiveMQTextMessage {commandId 5, responseRequired true, messageId ID:AKUNTAMU-1-1739-1373473592152-1:12:1:1:1, originalDestination null, originalTransactionId null, producerId ID:AKUNTAMU-1-1739-1373473592152-1:12:1:1, destination queue://TEST.FOO, transactionId null, expiration 0, timestamp 1373473603281, arrival 0, brokerInTime 1373473603281, brokerOutTime 1373474778676, correlationId null, replyTo null, persistent true, type null, priority 4, groupID null, groupSequence 0, targetConsumerId null, compressed false, userID null, content null, marshalledProperties null, dataStructure null, redeliveryCounter 0, size 0, properties null, readOnlyProperties true, readOnlyBody true, droppable false, text Message Counter : 11}, redeliveryCounter 0}
2013-07-10 11:46:18 INFO Consumer:49 - Message Counter : 12
2013-07-10 11:46:19 INFO Consumer:49 - Message Counter : 13
2013-07-10 11:46:19 INFO Consumer:49 - Message Counter : 14
2013-07-10 11:46:20 INFO Consumer:49 - Message Counter : 15
2013-07-10 11:46:20 INFO Consumer:49 - Message Counter : 16
2013-07-10 11:46:21 INFO Consumer:49 - Message Counter : 17
2013-07-10 11:46:21 INFO Consumer:49 - Message Counter : 18
2013-07-10 11:46:22 INFO Consumer:49 - Message Counter : 19
2013-07-10 11:46:22 INFO Consumer:49 - Message Counter : 20
2013-07-10 11:46:23 INFO Consumer:49 - Message Counter : 21
2013-07-10 11:46:23 INFO Consumer:49 - Message Counter : 22
2013-07-10 11:46:24 INFO Consumer:49 - Message Counter : 23
2013-07-10 11:46:24 INFO Consumer:49 - Message Counter : 24
2013-07-10 11:46:25 INFO Consumer:49 - Message Counter : 25
2013-07-10 11:46:25 INFO Consumer:49 - Message Counter : 26
2013-07-10 11:46:26 INFO Consumer:49 - Message Counter : 27
2013-07-10 11:46:26 INFO Consumer:49 - Message Counter : 28
2013-07-10 11:46:27 INFO Consumer:49 - Message Counter : 29
2013-07-10 11:46:27 INFO Consumer:49 - Message Counter : 30
2013-07-10 11:46:28 INFO Consumer:49 - Message Counter : 31
2013-07-10 11:46:28 INFO Consumer:49 - Message Counter : 32
2013-07-10 11:46:29 INFO Consumer:49 - Message Counter : 33
2013-07-10 11:46:29 INFO Consumer:49 - Message Counter : 34
2013-07-10 11:46:30 INFO Consumer:49 - Message Counter : 35
2013-07-10 11:46:30 INFO Consumer:49 - Message Counter : 36
2013-07-10 11:46:31 INFO Consumer:49 - Message Counter : 37
2013-07-10 11:46:31 INFO Consumer:49 - Message Counter : 38
2013-07-10 11:46:32 INFO Consumer:49 - Message Counter : 39
2013-07-10 11:46:32 WARN FailoverTransport:255 - Transport (tcp://127.0.0.1:61626) failed, reason: java.io.EOFException, attempting to automatically reconnect
2013-07-10 11:46:43 INFO FailoverTransport:1032 - Successfully reconnected to tcp://localhost:61616
2013-07-10 11:46:43 WARN ActiveMQMessageConsumer:1348 - Duplicate dispatch on connection: ID:AKUNTAMU-1-2141-1373474760280-1:1 to consumer: ID:AKUNTAMU-1-2141-1373474760280-1:1:1:1, ignoring (auto acking) duplicate: MessageDispatch {commandId 0, responseRequired false, consumerId ID:AKUNTAMU-1-2141-1373474760280-1:1:1:1, destination queue://TEST.FOO, message ActiveMQTextMessage {commandId 5, responseRequired true, messageId ID:AKUNTAMU-1-1739-1373473592152-1:40:1:1:1, originalDestination null, originalTransactionId null, producerId ID:AKUNTAMU-1-1739-1373473592152-1:40:1:1, destination queue://TEST.FOO, transactionId null, expiration 0, timestamp 1373473658595, arrival 0, brokerInTime 1373473658599, brokerOutTime 1373474803745, correlationId null, replyTo null, persistent true, type null, priority 4, groupID null, groupSequence 0, targetConsumerId null, compressed false, userID null, content null, marshalledProperties null, dataStructure null, redeliveryCounter 0, size 0, properties null, readOnlyProperties true, readOnlyBody true, droppable false, text Message Counter : 39}, redeliveryCounter 0}
2013-07-10 11:46:43 INFO Consumer:49 - Message Counter : 40
2013-07-10 11:46:44 INFO Consumer:49 - Message Counter : 41
2013-07-10 11:46:44 INFO Consumer:49 - Message Counter : 42
2013-07-10 11:46:45 INFO Consumer:49 - Message Counter : 43
2013-07-10 11:46:45 INFO Consumer:49 - Message Counter : 44
2013-07-10 11:46:46 INFO Consumer:49 - Message Counter : 45
2013-07-10 11:46:46 INFO Consumer:49 - Message Counter : 46
2013-07-10 11:46:47 INFO Consumer:49 - Message Counter : 47
2013-07-10 11:46:47 INFO Consumer:49 - Message Counter : 48
2013-07-10 11:46:48 INFO Consumer:49 - Message Counter : 49 我们来看看ActiveMQ Web控制台 您可能会发现出队消息 11非常有趣。 这是自当前ActiveMQ主节点启动以来已出队的消息数。 结论 因此我们看到了以下情况 在具有共享的基于KahaDB文件的数据库的主/从配置中运行2个ActiveMQ节点。 将托管在Tomcat实例中的ActiveMQ Web控制台配置为指向群集中的哪个节点为主节点 故障转移方案 故障转移忽略的消息发布者和使用者行为 在以后的博客中我将发布一些其他有趣的ActiveMQ配置。 敬请关注。 ActiveMQing快乐 资源 http://activemq.apache.org/ http://www.jakubkorab.net/category/technology/activemq 翻译自: https://www.javacodegeeks.com/2014/04/using-activemq-masterslave-configuration-with-failover-protocol.htmlactivemq主从配置