ActiveMQ集群

官方文档地址:http://activemq.apache.org/networks-of-brokers

支持定时

vim activemq/conf/activemq.xml

在这里插入图片描述

schedulerSupport="true"

集群部署方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Broker-Cluster 部署

机器列表

  • 192.168.100.242
  • 192.168.100.243

为了保证机器之间网络互通,建议关闭防火墙:systemctl stop firewalld.service

Static静态集群部署方式

static 方式就是在broker的配置中,静态指定要连接到其它broker的地址,格式:

<networkConnector uri="static:(tcp://192.168.100.243:61616)"/>

说明: host1、host2表示连接目标的地址,61616是连接目标开放的端口。修改配置前,先停止activemq

一、修改配置文件

  1. 修改192.168.100.242上的/var/activemq/conf/activemq.xml,在<broker></broker>标签中添加以下代码
    <networkConnectors>
        <networkConnector uri="static:(tcp://192.168.100.243:61616)"/>
    </networkConnectors>
  1. 修改192.168.100.243上的/var/activemq/conf/activemq.xml,在<broker></broker>标签中添加以下代码
    <networkConnectors>
        <networkConnector uri="static:(tcp://192.168.100.242:61616)"/>
    </networkConnectors>

三、验证

  1. 启动所有broker
  2. 查看日志中是否有WARN等警告/错误信息。 tail -f /var/activemq/data/activemq.log
  3. 所有的broker都启动后,可以在web管理界面的Networky页面可以看到连接信息。
  4. 将生产者与消费者分别连接到不同的节点上,看生产者发送的消息,在消费者中能不能收到。

Dynamic自动发现集群部署方式

ActiveMQ 通过组播方式将自己的信息发送出去,接收到的信息的机器再来连接这个发送源。默认情况下,ActiveMQ 发送的是机器名,可以通过配置修改成发送IP地址。注意机器间的网络

一、修改配置文件

  1. 修改每台机器上的/var/activemq/conf/activemq.xml,在标签中添加以下代码
    <networkConnectors>
        <networkConnector uri="multicast://default"/>
    </networkConnectors>
    
  2. 修改transportConnector,增加discoveryUri属性,并添加publishedAddressPolicy
    <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600" discoveryUri="multicast://default">
     <publishedAddressPolicy>
         <publishedAddressPolicy publishedHostStrategy="IPADDRESS"></publishedAddressPolicy>
     </publishedAddressPolicy>
    </transportConnector>
    

验证方式和上面的静态方式一致

集群配置参考 http://activemq.apache.org/clustering.html

数据库共享方案

1、 使用数据库进行消息持久化

1.1、引入数据库驱动包和数据库连接池

根据需要,把数据库驱动放到activemq目录下 lib/extra
如:mysql-connector-java-5.1.41.jar

1.2、修改activemq.xml,使用jdbc持久化

# /var/activemq/conf/activemq.xml  文件 persistenceAdapter节点
<!-- persistent=true-->
<broker brokerName="localhost" persistent="true" xmlns="http://activemq.apache.org/schema/core">
    <persistenceAdapter>
       <!-- 这里是关键 -->
        <jdbcPersistenceAdapter dataSource="#mysql-ds" useDatabaseLock="false" transactionIsolation="4"/>
    </persistenceAdapter>
      ........
</broker>
<!-- MySql DataSource Sample Setup -->
<bean id="mysql-ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://192.168.1.146:3306/activemq?relaxAutoCommit=true"/>
    <property name="username" value="root"/>
    <property name="password" value="Crane@zhuang9306"/>
    <property name="poolPreparedStatements" value="true"/>
</bean>

2、集群配置

多台服务器部署启动activemq服务,使用同一个数据库

3、客户端使用 http://activemq.apache.org/failover-transport-reference.html

# brokerURI 使用failover,故障自动切换方式
# 非failover的公共参数配置通过nested.*,例如 failover:(...)?nested.wireFormat.maxInactivityDuration=1000
# ?randomize=false 随机选择,默认是顺序
# 指定优先切换 failover:(tcp://host1:61616,tcp://host2:61616,tcp://host3:61616)?priorityBackup=true&priorityURIs=tcp://local1:61616,tcp://local2:61616
# maxReconnectDelay重连的最大间隔时间(毫秒)

brokerUrl = "failover:(tcp://activemq.tony.com:61616,tcp://activemq-slave.tony.com:61616)?initialReconnectDelay=100";

4、原理简述

1、 数据库表自动创建
2、 多服务器争抢获取LOCK表锁
3、 连接断开后,客户端自动重连
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值