文章目录
  1. 1.概述
  2. 2.安装 ActiveMQ(5.15.3)
    1. 2.1 下载
    2. 2.2 安装(解压)
    3. 2.3 设置环境变量
    4. 2.4 配置
    5. 2.5 启动与停止
    6. 2.6 防火墙放行
  3. 3.管理
  4. 4.高级用法
    1. 4.1 集群部署
    2. 4.2 更多细节

ActiveMQ 是 Apache 流行、强大的开源消息传递和集成模式服务器,它完全支持 JMS 1.1(严格实现“点对点”和“发布/订阅”两种消息模型) 和 J2EE 1.4。作为实验,本文实现了 ActiveMQ 单服务器的安装及其管理,并概述了集群部署的方法。

作者:王克锋
出处:https://kefeng.wang/2017/10/16/activemq-deploy/
版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。

1.概述

官网: http://activemq.apache.org/
Apache ActiveMQ 是最流行和最强大的开源消息传递和集成模式服务器。
Apache ActiveMQ 速度很快,支持许多跨语言客户端和协议,随附易于使用的企业集成模式和许多高级功能,同时完全支持 JMS 1.1 和 J2EE 1.4。
Apache ActiveMQ 是在 Apache 2.0许可下发布的。

ActiveMQ 支持 JMS 规范的两种【消息模型】:

  • 点对点(queue, point to point):生产者生产并发布消息到 queue 中,消费者从 queue 中取出并消费消息(消息被移出,只能被一个消费者收取)。
  • 发布/订阅(topic, publish/subscribe):生产者将消息发布到 topic 中,同时有多个消费者订阅并消费该消息(同一消息被所有订阅者收取)。

2.安装 ActiveMQ(5.15.3)

2.1 下载

http://activemq.apache.org/download.html
http://activemq.apache.org/activemq-5153-release.html
根据操作系统下载:Linux | Windows

2.2 安装(解压)

环境要求 JRE 1.7(ActiveMQ 5.10.0 以下可以为 JRE 1.6)。

1
2
wget https://mirrors.tuna.tsinghua.edu.cn/apache/activemq/5.15.3/apache-activemq-5.15.3-bin.tar.gz
sudo tar -zxf apache-activemq-5.15.3-bin.tar.gz -C /opt

2.3 设置环境变量

1
2
3
## sudo vim /etc/profile ## 所有用户有效
export ACTIVEMQ_HOME=/opt/apache-activemq-5.15.3
export PATH=$PATH:$ACTIVEMQ_HOME/bin

保存文件,Linux 用户重新登录后生效。

2.4 配置

1
2
3
4
## sudo vim $ACTIVEMQ_HOME/conf/activemq.xml
## 客户端参数默认值: 监听端口 61616, 最大连接数 1000, 最大消息 100M
## 管理后台参数默认值: 监听端口 8161
<transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

2.5 启动与停止

1
2
3
4
tail -f $ACTIVEMQ_HOME/data/activemq.log
sudo $ACTIVEMQ_HOME/bin/activemq console ## 作为“前台进程”启动(CTRL+C停止)
sudo $ACTIVEMQ_HOME/bin/activemq start ## 作为“守护进程”启动
sudo $ACTIVEMQ_HOME/bin/activemq stop ## 停止“守护进程”

2.6 防火墙放行

如果非本机应用需要连接,必须把监听端口放行。

1
2
3
4
### sudo vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8161 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 61616 -j ACCEPT
### 重启生效: sudo systemctl restart iptables

3.管理

浏览器打开: http://centos:8161/admin
用户名/密码: admin/admin(可以在 conf/users.properties 中修改)

  • Home: 主机和版本等信息
  • Queues: 各队列的信息,包括名称、生产个数/消费个数、各生产者/各消费者,可进行删除操作等;
  • Topics: 各主题的信息,包括名称、生产个数/消费个数、各生产者/各消费者等;
  • Subscribers: 订阅者;
  • Connections: 各连接;
  • Network
  • Scheduled
  • Send: 手工发送JMS消息。

4.高级用法

4.1 集群部署

文档: http://activemq.apache.org/masterslave.html
常用方案是基于排他锁的 Master-Slave 架构:

  • 排他锁可以是共享文件或共享数据表;
  • 集群启动时,首先夺得排他锁的节点成为 Master 节点,对外提供服务;
  • 其他节点(可以有多个)则作为 Slave 节点,不对外提供服务;
  • 当 Master 节点故障时(网络中断、应用异常等),某个 Slave 会夺得排他锁而升级为 Master;
  • 发生故障的前 Master 恢复时,只能作为 Slave 备用。

根据排他锁实现方案,可分为以下三种:

  • 共享文件系统: 需要共享的文件系统,如SAN;
  • 共享数据库: 需要共享数据库,ActiveMQ 版本要求为 4.1+;
  • ZooKeeper服务器: 非常快,需要 ZooKeeper 服务器,推荐 KahaDB 存储,ActiveMQ 版本要求为 5.9.0+。
    它使用 ZooKeeper(应该运行至少 3 个 ZooKeeper 服务器节点)来协调集群中的哪个节点成为主节点。

客户端应该使用故障转移传输连接到可用的代理:
failover:(tcp://broker1:61616,tcp://broker2:61616,tcp://broker3:61616)
由于只有 Master 对外提供服务,客户端只能连接上当前 Master。

集群扩展方案:

  • 垂直扩展: 提升硬件性能(CPU/内存),改进 ActiveMQ 配置;
  • 水平扩展: 不同业务类型的 queue/topic 拆分更多的 broker 中,类似于数据库的分库分表。

4.2 更多细节

http://activemq.apache.org/faq.html

文章目录
  1. 1.概述
  2. 2.安装 ActiveMQ(5.15.3)
    1. 2.1 下载
    2. 2.2 安装(解压)
    3. 2.3 设置环境变量
    4. 2.4 配置
    5. 2.5 启动与停止
    6. 2.6 防火墙放行
  3. 3.管理
  4. 4.高级用法
    1. 4.1 集群部署
    2. 4.2 更多细节