【Linux】Linux环境下安装RocketMQ(图文解说详细版)

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录

一、简介

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

RocketMQ 相较于其它 MQ 的优势

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

RocketMQ主要有四大核心组成部分NameServer、Broker、Producer以及Consumer四部分

在这里插入图片描述

二、MQ 下载

官网下载下载链接

进入是这样子的这里是 rocketMq 最新版本的下载链接
在这里插入图片描述
在这里插入图片描述

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

三、JAVA 环境配置

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

Linux 上配置 JAVA 环境可参见博客Linux安装Java环境OpenJDK

在这里插入图片描述

四、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

在这里插入图片描述

  1. 启动 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如果报错了可能出现的原因

  • 防火墙没关

可以关闭掉防火墙

# 关闭防火墙
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
  • 查下 broker 关掉了

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

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

在这里插入图片描述

七、运行

#新建目录用来存放rocketmq-console的文件
mkdir /usr/local/rocketmq-console

cp target/rocketmq-console-ng-2.0.0.jar /usr/local/rocketmq-console/

#运行jar包
cd /usr/local/rocketmq-console/
java -jar rocketmq-console-ng-2.0.0.jar

运行成功在浏览器输入 http://127.0.0.1:8080 即可看到运行界面账号密码: admin/admin
在这里插入图片描述

  • 配置账号密码
    我们开启了登录验证的功能但是没有设置账户密码这里默认的账户密码为 admin/admin。我们修改下这个密码。
    在 rocketmq-console的数据目录下新建账户文件 users.properties 。
vim /usr/local/rocketmq-console/data/users.properties
  • 设置账号密码
# 该文件支持热修改即添加和修改用户时不需要重新启动console
# 格式 每行定义一个用户 username=password[,N]  #N是可选项可以为0 (普通用户) 1 管理员  

#定义管理员 
admin=123456,1

#定义普通用户
#user1=user1
#user2=user2

然后我们杀进程重启这个jar包即可。
在这里插入图片描述

八、关闭 MQ

进入 bin 目录下
关闭 NameServer

sh mqshutdown namesrv

关闭 Broker

sh mqshutdown broker
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux