MQ–1( Message queuing)>>>>RabbitMQ
MQ–2 Message queuing)>>>>ZooKeeper
MQ–3 Message queuing)>>>>kafka
四.ActiveMQ
http://activemq.apache.org/ #ActiveMQ官网
ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,ActiveMQ采用Java开发,设计目标是提供标准的、面向消息的、能够跨越多语言和多系统的应用集成消息通信中间件。
ActiveMQ 提供了多语言 客户端 支持,除了一般的 Java 客户端以外,还可以使用C/C++ 、 PHP 、 Python 、 JavaScript Ajax )等语言开发客户端 。
目前分为经典和下一代两个版本。
http://activemq.apache.org/components/classic/download/ #下载地址
http://activemq.apache.org/download-archives #官方安装文档
4.2 A ctiveMQ 单机 安装
http://activemq.apache.org/components/classic/ #官方更新记录
http://activemq.apache.org/getting-started #官方安装文档
4.2.1 配置 java 环境:
ActiveMQ依赖于 java 环境,因此要先配置 java
主机:172.20.10.200
# apt update
# apt install openjdk-8-jdk -y
# java version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222 8u222 b10 1ubuntu1~18.04.1 b10)
OpenJDK 64 Bit Server VM (build 25.222 b10, mixed mode)
问题:apt update的时候出错:
解决办法:
在终端敲入这两句命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
4.2.2 :部署 并启动 ActiveMQ
# tar xvf apache-activemq-5.15.10 bin.tar.gz
# ln -sv /usr/local/src/apache-activemq-5.15.10 /usr/local/activemq
# cd /usr/local/activemq
#root@Activemq-server1:/usr/local/activemq# bin/activemq start
INFO: Loading '/usr/local/src/apache-activemq-5.15.12//bin/env'
INFO: Using java '/usr/bin/java'
INFO: Starting - inspect logfiles specified in logging.properties and log4j.properties to get details
INFO: pidfile created : '/usr/local/src/apache-activemq-5.15.12//data/activemq.pid' (pid '20545')
#查看java进程是否起来
#root@Activemq-server1:/usr/local/activemq# ps -ef|grep java
root 20545 1 7 23:16 pts/0 00:00:03 /usr/bin/java -Xms64M -Xmx1G -
Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/usr/local/src/apache-
activemq-5.15.12//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -
Djava.io.tmpdir=/usr/local/src/apache-activemq-5.15.12//tmp -Dactivemq.classpath=/usr/local/src/apache-
activemq-5.15.12//conf:/usr/local/src/apache-activemq-5.15.12//../lib/: -Dactivemq.home=/usr/local/src/apache-
activemq-5.15.12/ -Dactivemq.base=/usr/local/src/apache-activemq-5.15.12/ -
Dactivemq.conf=/usr/local/src/apache-activemq-5.15.12//conf -Dactivemq.data=/usr/local/src/apache-activemq-
5.15.12//data -jar /usr/local/src/apache-activemq-5.15.12//bin/activemq.jar start
root 20586 1550 0 23:16 pts/0 00:00:00 grep --color=auto java
4.2.3 验证 ActiveMQ 日志:
#tail /usr/local/activemq/data/activemq.log
4.2.4 :验证 activemq 端口和进程
4.2.4.1验证端口:
4.2.4.2验证进程:
4.2.5 登录 A ctive MQ Web 界面:
默认账户名和密码 admin
点击 Manage ActIveMQ broker 登入管理界面 默认口令都是admin
4.3 ActiveMQ 集群部署
http://activemq.apache.org/replicated-leveldb-store.html #官方文档
4.3.1 实现原理
它使用Apache ZooKeeper协调集群中的哪个节点成为主节点。当选的主代理节点启动并接受客户端连接。其他节点进入从模式并连接主节点并同步其持久状态。从节点不接受客户端连接。所有持久性操作都将复制到连接的从站。如果主服务器去世,则具有最新更新的从服务器将升级为主服务器。然后可以将发生故障的节点重新联机,并将进入从属模式。
所有需要同步到磁盘的消息传递操作都将等待更新完成后再复制到法定数量的节点上。因此,如果将存储配置为,replicas="3"则仲裁大小为(3/2+1)=2。主服务器将更新存储在本地,并等待另外1个从服务器存储更新,然后再报告成功。考虑它的另一种方法是,存储将对复制节点的仲裁执行同步复制,而对任何其他节点执行异步复制复制。
当选出一个新的主节点时,您还至少需要有一定数量的联机节点才能找到更新最新的节点。更新最新的节点将成为新的主节点。因此,建议您至少在3个副本节点上运行,以便可以在不造成服务中断的情况下关闭一个副本节点。
4.3.2 集群配置
安装accivemq前一定要保证zookeeper服务正常启动
需要在三个node节点上都配置各自IP和hosts,此处仅展示server1
修改默认的集群web连接端口,默认为8161,可以不修改,监听端口j设置为本机IP便于做负载
root@Activemq-server1:~# cd /usr/local/src/
root@Activemq-server1:~# tar xf apache-activemq-5.15.12-bin.tar.gz
root@Activemq-server1:/usr/local/src# ln -sv apache-activemq-5.15.12 /usr/local/activemq
root@Activemq-server1:/usr/local/src# cd /usr/local/activemq
root@Activemq-server1:/usr/local/activemq# vim conf/jetty.xml
119 <property name="host" value="172.20.10.200"/>
<property name="port" value="8161"/>
配置持久性配置器persistence Adapter,连接到zookeeper集群
```bash
root@Activemq-server1:/usr/local/activemq# vim conf/activemq.xml
81 <persistenceAdapter>
<!--kahaDB directory="${activemq.data}/kahadb"/-->
<replicatedLevelDB directory="${activemq.data}/leveldb" replicas="3" bind="tcp://0.0.0.0:62621"
zkAddress="172.20.10.100:2181,172.20.10.101:2181,172.20.10.102:2181"
zkPath="/usr/local/activemq/data/kahadb" hostname="172.20.10.200" />
</persistenceAdapter>
# directory: 存储数据的路径 kahadb 在zookeeper机器默认有这个缓存文件
# replicas:集群中的节点数【(replicas/2)+1公式表示集群中至少要正常运行的服务数量】,3台集群那么允许1台宕机, 另外两台要正常运行
# bind:当该节点成为master后,它将绑定已配置的地址和端口来为复制协议提供服务。还支持使用动态端口。只需使用tcp://0.0.0.0:0进行配置即可,默认端口为61616。
# zkAddress:ZK的ip和port, 如果是集群,则用逗号隔开(这里作为简单示例ZooKeeper配置为单点, 这样已经适用于大多数环境了, 集群也就多几个配置)
# zkPassword:当连接到ZooKeeper服务器时用的密码,没有密码则不配置。
# zkPah:ZK选举信息交换的存贮路径,启动服务后actimvemq会到zookeeper上注册生成此路径
root@Activemq-server1:/usr/local/src/apache-activemq-5.15.12# ./bin/activemq restart
root@Activemq-server2:/usr/local/src/apache-activemq-5.15.12# ./bin/activemq restart
root@Activemq-server3:/usr/local/src/apache-activemq-5.15.12# ./bin/activemq restart
# cat /usr/local/src/apache-activemq-5.15.12/data/activemq.log #日志
连接zookeeper客户端查看是否集群已经配置成功
web界面访问
因为三个Active MQ的IP不一致,且每次某一台宕机后称为master的不明确,建议把三台node加入负载均衡中如haproxy使用统一IP调用
参考文档
https://www.jianshu.com/p/dcf0623b3036
https://segmentfault.com/a/1190000014592517#item-3
https://blog.52itstyle.vip/archives/343/
五.Rocket MQ:
https://github.com/apache/rocketmq #github链接
http://jm.taobao.org/tags/Apache-RocketMQ/ #阿里开源基于 J ava 开发 的消息队列
https://blog.csdn.net/wangmx1993328/article/details/81536168?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task #centos Rocket MQ简单介绍
https://www.jianshu.com/p/d8a21ab2c2d3 #rocketMq中文文档