第一步:先配置好第一个activityMQ
在broker外面加入数据库的连接信息,并将mysql的mysql-connector-java.jar,即java连接mysql的jar包放入apache-activemq-5.14.1lib目录下
第二步:复制配置好的第一个
修改端口:如果不在一台服务器上是可以不改端口号的,Activemq默认主要使用2个端口,8161(控制台使用)、61616(提供服务的端口)
(1)activemq.xml,默认是61616
(2)jetty.xml,默认是8161第三个就改为61636与8163
第三步:启动
只有第一个启动的是master才能正常使用,其他的都是slave做等待,在Master挂了之后,会自动分配一个slave为master
第四步:客户端连接
客户端连接:
pom.xml
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.3.3.RELEASE</spring.version> <activemq>5.11.4</activemq> <!-- <activemq>5.14.1</activemq> --> <!-- 5.12.0开始以后的版本jar包中包含了spring,与当前引入的spring冲突,导致起不来服务,如果用高版本的activitymq则须把activemq-all中的spring删除,然后再引入就可以了 --> </properties> <dependencies> <!-- Active MQ --> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>${activemq}</version> </dependency> <!-- 集成JMS --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> <!-- xbean 如<amq:connectionFactory /> --> <dependency> <groupId>org.apache.xbean</groupId> <artifactId>xbean-spring</artifactId> <version>4.5</version> </dependency> </dependencies>
ActiveMQ 的客户端只能访问Master的Broker,其他处于Slave的Broker不能访问。所以客户端连接Broker应该使用failover协议。
配置文件地址应为:
failover:(tcp://192.168.1.100:61611,tcp://192.168.1.100:61612,tcp://192.168.1.100:61613)?randomize=false
贴出spring的配置
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <property name="sessionCacheSize" value="100" /> <property name="targetConnectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <!-- MQ地址 --> <!-- <property name="brokerURL" value="tcp://localhost:61616" /> --> <!-- 基于jdbc的集群连接 --> <property name="brokerURL" value="failover:(tcp://192.168.1.100:61616,tcp://192.168.1.100:61626,tcp://192.168.1.100:61636)?randomize=false" /> <!-- 是否异步发送 --> <property name="useAsyncSend" value="true" /> </bean> </property> </bean>