ActiveMQ

入门概述#

MQ 种类和对比#

MQ 就是消息中间件。MQ 是一种理念,ActiveMQ 是 MQ 的落地产品。不管是哪款消息中间件,都有如下一些技术维度:

assets/ActiveMQ/image-20240408221948862.png

MQ 消息的详细比较

assets/ActiveMQ/image-20240408222125860.png

各类 MQ 的擅长领域

MQ 种类 变成语言 擅长领域
kafka scala 大数据领域的主流 MQ。
rabbitmq erlang 基于 erlang 语言,不好修改底层,不好查找问题的原因,不建议选用
rocketmq java 适用于大型项目。适用于集群
activemq java 适用于中小型项目

是什么#

面向消息的中间件(message-oriented middleware)MOM 能够很好的解决以上问题。是指利用高效可靠的消息传递机制与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型在分布式环境下提供应用解耦,弹性伸缩,冗余存储、流量削峰,异步通信,数据同步等功能。

大致的过程是这样的:发送者把消息发送给消息服务器,消息服务器将消息存放在若干队列/主题 topic 中,在合适的时候,消息服务器回将消息转发给接受者。在这个过程中,发送和接收是异步的,也就是发送无需等待,而且发送者和接受者的生命周期也没有必然的关系;尤其在发布 pub/订阅 sub 模式下,也可以完成一对多的通信,即让一个消息有多个接受者。

assets/ActiveMQ/image-20240408224621057.png

怎么下载#

如何安装与查看控制台#

linux 系统直接安装#

检查 JAVA 环境#

由于 ActiveMQ 是 java 编写的,因此需要有 jdk 的运行环境,检查 Java 版本

 java -version

assets/ActiveMQ/image-20240408234356463.png

官网下载安装包#

凡遇技术,必定官网ActiveMQ (apache.org)

注意:5.16.x版本及以下支持java8,5.17.x-5.18.x需要java11,6版本则需要java17

下图中左侧是稳定版,右侧是开发版。

assets/ActiveMQ/image-20240408231212252.png

按需要查找版本,此处贴一个5.14.5版本的链接ActiveMQ --- ActiveMQ (apache.org),由于后续涉及集群的搭建,建议下载Linux的版本,毕竟没有见过window搭建集群的

assets/ActiveMQ/image-20240409182551469.png

上传安装包到linux服务器#

安装包放到/opt 目录下,放在哪个目录没有硬性要求

assets/ActiveMQ/image-20240408235316664.png

创建软件安装文件夹#

软件安装文件夹,没有路径要求

# 创建软件安装的文件夹 -p 父目录不存在,则循环创建
mkdir -p /software/activeMQ/

解压缩安装包#

tar -zxvf apache-activemq-5.14.5-bin.tar.gz

assets/ActiveMQ/image-20240409000433353.png

拷贝解压文件#

拷贝解压的软件到指定的安装文件夹,直接解压过去也是可以的

cp -r apache-activemq-5.14.5 /software/activeMQ/

assets/ActiveMQ/image-20240409000715651.png

普通启动#

# 首先要跳转到 %软件的安装目录%/bin 目录下
cd /software/activeMQ/apache-activemq-5.14.5/bin
# 执行启动命令
./activemq start

assets/ActiveMQ/image-20240409001242335.png

docker安装#

前情提要:Docker需要已经安装,Docker的使用参考Docker小册

查询镜像#

官方并没有为ActiveMq制作镜像,我们只能选择点赞数最多的一个下载使用。版本5.14.3

docker search activemq

assets/ActiveMQ/image-20240409173028743.png

拉取镜像#

docker pull webcenter/activemq

assets/ActiveMQ/image-20240409173703232.png

查看镜像#

 docker images webcenter/activemq

assets/ActiveMQ/image-20240409174536552.png

启动容器#

也可以直接执行该指令,省去前面查询的步骤

  • 61616是 activemq 的容器使用端口(映射为61617)
  • 8161是 web 页面管理端口(对外映射为8162)
	docker run --name='activemq5.14.3' \
      -d \
	  -p 8161:8161 \
	  -p 61616:61616 \
	  -e ACTIVEMQ_ADMIN_LOGIN=admin \
	  -e ACTIVEMQ_ADMIN_PASSWORD=123456 \
	  -v /app/activemq/data:/data/activemq \
	  -v /app/activemq/log:/var/log/activemq \
	  webcenter/activemq:latest

assets/ActiveMQ/image-20240409175301711.png

检查服务是否启动#

方式1:检查进程#

 ps -ef | grep activemq

assets/ActiveMQ/image-20240409015224394.png

方式2:检查端口是否被占用#

ActiveMQ默认端口是61616

netstat -anp | grep 61616

assets/ActiveMQ/image-20240409181131261.png

方式三:换种方式查看端口是否被占用#

 lsof -i:61616

assets/ActiveMQ/image-20240409181157709.png

启动异常排查#

JDK版本不满足当前MQ的需求#

现象描述:linux 系统直接安装的方式下,项目迟迟启动不起来,activemq.log中也没有任何异常的抛出

排查结果: activeMQ5.17.x版本要求的JDK版本为11,而本地当前的java版本为java8,因此导致的启动失败,这也是前面截图中部分操作的指令使用的是6.1.1做演示的原因

assets/ActiveMQ/image-20240409181844086.png

参考资料#

作者:ZhangBlog

出处:https://www.cnblogs.com/aaalei/p/18122989

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   张Blog  阅读(37)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示