ActiveMQ 服务器的部署

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)。

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 设置环境变量

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

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

2.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 启动与停止

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 防火墙放行

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

### 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

猜你喜欢

转载自blog.csdn.net/kefengwang/article/details/81177604
今日推荐