ActiveMQ Network of Brokers 集群部署文档

ActiveMQ Network of Brokers 集群部署文档

1. 环境依赖

  • 操作系统:Linux (Ubuntu / CentOS)
  • Docker和Docker Compose已安装
  • ActiveMQ镜像:apache/activemq-classic:6.1.6
  • 网络:各节点互相访问IP和端口 (61616)

2. 节点列表

节点 服务器 IP brokerName
broker-1 192.168.0.53 broker-53
broker-2 192.168.0.59 broker-59
broker-3 192.168.0.60 broker-60

3. 配置修改

3.1 修改 activemq.xml

重点:每台节点的 <broker brokerName="xxx">必须唯一!!

3.1.1 brokerName

找到 <broker> 节点,修改 brokerName ,保持唯一:

<broker xmlns="http://activemq.apache.org/schema/core" brokerName="broker-53" dataDirectory="${activemq.data}">

3.1.2 配置NetworkConnectors

<broker> 节点内(建议放到 <transportConnectors> 后),加上如下配置:

<networkConnectors>
    <networkConnector name="to-other-brokers"
                      uri="static:(tcp://192.168.0.59:61616,tcp://192.168.0.60:61616)"
                      duplex="false"
                      dynamicOnly="true"
                      decreaseNetworkConsumerPriority="true"
                      networkTTL="2"/>
</networkConnectors>
  • uri:列出除本机外,其他所有broker的端口
  • duplex:双向通讯(false表示单向,通常用单向)
  • dynamicOnly:仅保持有活动consumer的连接,减少耗费
  • decreaseNetworkConsumerPriority:使网络consumer的优先级降低,优先本地consumer
  • networkTTL:消息继承最大级数,配合static,通常设置2

3.1.3 注意事项

  • NetworkConnectors的配置,必须放在<broker> 标签内,而不是<beans>之外!
  • <transportConnectors><networkConnectors>同级,不要嵌套错误

3.2 docker-compose.yml

每台机器启动一个ActiveMQ容器,按需修改有关文件挂连:

version: '3'

services:
  activemq:
    image: apache/activemq-classic:6.1.6
    container_name: activemq
    ports:
      - "8161:8161"
      - "61616:61616"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /usr/local/activemq/users.properties:/opt/apache-activemq/conf/users.properties
      - /usr/local/activemq/activemq.xml:/opt/apache-activemq/conf/activemq.xml
      - /usr/local/activemq/jetty.xml:/opt/apache-activemq/conf/jetty.xml
      - /usr/local/activemq/data:/opt/apache-activemq/data
    restart: always

注:

  • /usr/local/activemq/为本机目录,存放修改后的activemq.xmlusers.properties
  • 61616是openwire协议端口,不能占用

4. 启动

# 在每台机器启动
cd /opt/activemq
sudo docker-compose up -d

5. 验证

  • 检查每台ActiveMQ Web管理界面: http://:8161/
  • 检查日志:是否显示成功连接到其他broker,相关日志信息:
Successfully connected to static:(tcp://192.168.0.59:61616,tcp://192.168.0.60:61616)
  • 发布消息,看是否可以通过网络转发到其他节点

6. 附加:网络上线图

[ broker-53 ]   <-->   [ broker-59 ]   <-->   [ broker-60 ]
     |                              ^                       |
     +------------------------------+

# 每个broker通过networkConnector直接实现互联,通过定向线路转发消息

posted @ 2025-04-28 15:09  wandereryjh  阅读(91)  评论(0)    收藏  举报