ActiveMQ 服务器的部署

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

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

作者:王克锋

出处:https://kefeng.wang/2017/10/16/activemq-deploy/

原文发布于微信公众号 - AiSmart4J(smart4j)

原文发表时间:2019-05-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券