activemq jdbc-master/slave集群搭建和客户端消费说明
来源:互联网 发布:网络语偷猪是什么意思 编辑:程序博客网 时间:2024/05/01 03:35
1、下载activemq客户端至linux系统,可以定义两个目录,在一台机器或者两台机器上都行。举例:建立目录mq/activemq1和mq/activemq2
2、解压安装mq,tar -xvf .......tar.gz
3、修改配置文件:
/usr/mq/activemq2/apache-activemq-5.14.0/conf/active.xml文件和/usr/mq/activemq1/apache-activemq-5.14.0/conf/active.xml
4、修改内容如下:
修改broker名字和文件目录
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="mq1" useJmx="true" dataDirectory="${activemq.data}">
增加持久化配置
<persistenceAdapter>
<jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#mysql-ds" useDatabaseLock="true"/>
</persistenceAdapter>
修改transport端口,防止冲突,如果在一台机器的话
<transportConnectors>
<!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
<transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/>
</transportConnectors>
增加数据源配置
<bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.0.45:3306/mq?autoReconnect=true"/>
<property name="username" value="root"/>
<property name="password" value="fruit@123"/>
<property name="poolPreparedStatements" value="true"/>
</bean>
注意:数据源的配置是在broker外面的
以上配置好了后,其他节点配置一致。在bin目录下启动: ./activemq start即可。可以观察data目录下的log文件。
对于console,由于采用的是jetty作为内置容器,可以修改jetty的端口8161防止冲突。
其他配置过程中的问题,请参见我的其他文档。
java客户端引入:
生产端:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
">
<!-- 配置JMS连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="failover:(tcp://172.16.83.#:61616,tcp://172.16.83.#:61617)?randomize=false" />
</bean>
<!-- 定义消息队列(Queue) -->
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<!-- 设置消息队列的名字 -->
<constructor-arg>
<value>financial_queue</value>
</constructor-arg>
</bean>
<!-- 配置JMS模板(Queue),Spring提供的JMS工具类,它发送、接收消息。 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestination" ref="queueDestination" />
<property name="receiveTimeout" value="10000" />
</bean>
<!--queue消息生产者 -->
<bean id="producerService" class="cn.cashier.service.mq.CashierQueueFactory">
<property name="jmsTemplate" ref="jmsTemplate"></property>
</bean>
</beans>
消费端:
<!-- 配置消息队列监听者(Queue),代码下面给出,只有一个onMessage方法
<bean id="queueMessageListener"
class="cn.account.service.mq.AccountQueueFactory" /> -->
<!-- 消息监听容器(Queue),配置连接工厂,监听的队列是queue2,监听器是上面定义的监听器
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" /> <property name="destination"
ref="queueDestination" /> <property name="messageListener" ref="queueMessageListener"
/> </bean> -->
pom.xml:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>5.14.0</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-protobuf</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>cn.hawtbuf</groupId>
<artifactId>hawtbuf</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
测试结果:
因为是采用mysql作为持久化机制,master会以数据库锁的方式争抢到锁,slave会进行定时获取锁,当master挂掉后,slave获取到锁,成为新的master,所以一定程度上,这种热备的standby,在小交易量的时候,可以支持。当高并发的时候,需要配合cluster进行部署。
可以在服务器关闭一台服务,可以发现,消息会进行正常的failover。
- activemq jdbc-master/slave集群搭建和客户端消费说明
- activemq的JDBC Master Slave主从集群
- ActiveMQ Master Slave集群配置
- ActiveMQ Master/Slave 集群配置
- 我的activemq JDBC Master Slave主从和持久化配置过程
- Apache ActiveMQ Cluster Master and Slave with JDBC
- ActiveMq master/slave
- jenkins-master-slave分布式搭建、使用和集群测试环境原理、部署及常见问题解决
- Hadoop,master和slave简单的搭建
- 搭建高可用mongodb集群master-slave模式
- RocketMQ双Master+双Slave集群环境搭建
- mysql master slave 搭建
- 数据库集群时的master和slave同步相关方法
- MySQL的Master/Slave集群安装和配置
- MySQL的Master/Slave集群安装和配置
- RESET MASTER和RESET SLAVE使用场景和说明
- Mysql JDBC 实现Master Slave
- ActiveMQ Master Slave配置以及示例
- 替换空格
- xamarin android打开拍照
- css精灵和hover伪类的联合使用
- 无废话WCF入门教程五[WCF的通信模式]
- 高性能协程库State Thread Library源代码剖析之二寻找入口
- activemq jdbc-master/slave集群搭建和客户端消费说明
- 浅析深究什么是SOA?
- C与C++类型强制转换总结
- 键盘遮住输入框
- Java-Review-Note——1.Java基础知识
- Visual Studio 配置GitHub(图文)
- Hadoop单机版安装
- Spring Boot 生命周期
- HDU 1286 找新朋友