RocketMQ 在Linux上的安装


前言

以下安装内容只适合初学者,只是单纯为了学习 rocketMQ 而写的笔记,内容源于 B站 黑马 rocketMQ 教程。


一、简介

消息队列中间件是分布式系统中的重要组件,主要解决应用耦合、流量削峰等问题,目前主流的 MQ 主要是:RocketMQ、kafka、RabbitMQ等。

RocketMQ 相较于其它 MQ 的优势:

  • 支持事务型消息(消息发送和 DB 操作保持两方的最终一致性,RabbitMQ 和 Kafka 不支持)
  • 支持结合 RocketMQ 的多个系统之间数据最终一致性(多方事务,二方事务是前提)
  • 支持 18 个级别的延迟消息(Kafka 不支持)
  • 支持指定次数和时间间隔的失败消息重发(Kafka 不支持,RabbitMQ 需要手动确认)
  • 支持 Consumer 端 Tag 过滤,减少不必要的网络传输(即过滤由MQ完成,而不是由消费者完成。RabbitMQ 和 Kafka 不支持)
  • 支持重复消费(RabbitMQ 不支持,Kafka 支持)

RocketMQ主要有四大核心组成部分:NameServerBrokerProducer以及Consumer四部分
在这里插入图片描述

参考博客:RocketMQ 介绍及基本概念


二、MQ 下载

官网下载:下载链接

进入是这样子的,这里是 rocketMq 最新版本的下载链接
在这里插入图片描述
在这里插入图片描述
如果你想下载旧版本的 rocketMq 的话,只需要改网址上的的版本就行,比如说把 4.9.3 改成 4.4.0

在这里插入图片描述


三、JAVA 环境配置

rocketmq 需要 Linux 上按照 JDK,版本 1.8 以上,如果你 Linux 上已经配置了 Java 环境可跳过。

Linux 上配置 JAVA 环境可参见博客:Linux-java环境配置

在这里插入图片描述


四、MQ 安装

将下载好的安装包上传至服务器
在这里插入图片描述
rz 命令直接上传安装包 (这里我提前在 linux 上创建了一个文件夹 mkdir /soft/rocketmq 来存放管理的软件)

在这里插入图片描述
上传至 Linux 之后再解压
命令:unzip rocketmq-all-4.4.0-bin-release.zip

在这里插入图片描述
在这里插入图片描述
它的目录结构:

  • benchmark:这里面就是一些可以直接运行,进行测试的 sh 文件
  • bean:该目录是比较常用的,里面是一些可执行文件
  • conf:这里面就是一些配置文件
  • lib:就是 mq 所依赖的第三方 jar 包

五、启动 MQ

(1)启动 NameServer
进入 bin 目录 cd bin/
后台启动 nohup sh mqnamesrv & 或者 nohup ./mqnamesrv &
在这里插入图片描述
可以查看日志,看 mq 是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log
在这里插入图片描述
或者通过端口号查看
netstat -an | grep 9876
在这里插入图片描述
(2)启动 Broker
在启动之前先修改两个配置
vim runserver.sh
在这里插入图片描述
mq 默认需要的内存是比较大的,根据自己 Linux 的内存大小去设置,我这里就改成 256 256 128 了

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

vim runbroker.sh
在这里插入图片描述
这里也修改成 256 256 128

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

启动 broker
nohup ./mqbroker -n localhost:9876 &
在这里插入图片描述
查看日志检测是否启动成功
tail -f ~/logs/rocketmqlogs/broker.log

在这里插入图片描述
又看到日志打印这个就说明启动成功了,注意:不要把它给关了


六、测试

开了两个窗口,都在 mq 的 bin 目录下,一个用于发送消息,一个用于接收消息
在这里插入图片描述

1. 发送消息

# 声明一个 namesrv 的地址
export NAMESRV_ADDR=localhost:9876
# 发送消息
./tools.sh org.apache.rocketmq.example.quickstart.Producer

在这里插入图片描述
PS:如果报错了,可能出现的原因:
在这里插入图片描述
(1)防火墙没关

可以关闭掉防火墙

# 关闭防火墙
systemctl stop firewalld.service 
# 查看防火墙的状态
firewall-cmd --state 
# 禁止firewall开机启动
systemctl disable firewalld.service

或者让防火墙开放 MQ 相关的端口

# 开放name server默认端口
firewall-cmd --remove-port=9876/tcp --permanent
# 开放master默认端口
firewall-cmd --remove-port=10911/tcp --permanent
# 开放slave默认端口 (当前集群模式可不开启)
firewall-cmd --remove-port=11011/tcp --permanent 
# 重启防火墙
firewall-cmd --reload

(2)检查下 broker 关掉了

把 nameServer 和 Broker 重新启动,这里我就说 broker 关掉引起的

2. 接收消息

# 声明一个 namesrv 的地址
export NAMESRV_ADDR=localhost:9876
# 发送消息
./tools.sh org.apache.rocketmq.example.quickstart.Consumer

在这里插入图片描述


八、关闭 MQ

进入 bin 目录下
关闭 NameServer
sh mqshutdown namesrv
关闭 Broker
sh mqshutdown broker

下篇:RocketMQ 监控平台搭建与项目引入

猜你喜欢

转载自blog.csdn.net/xhmico/article/details/122938904