下载前准备
本文云服务器系统为centOS 7.9
RocketMQ 依赖于jdk1.8以上,因此,需要先安装jdk。如果已经安装jdk,可以跳过此步。
jdk快速安装方法:
查看可安装的jdk版本,可用如下代码
yum list |grep jdk
使用以下代码下载并安装jdk1.8,无需配置,下载完成后可直接使用。
yum install -y java-1.8.0-openjdk-devel.x86_64
RocketMQ的下载
环境要求:安装jdk1.8以上。
官网:https://rocketmq.apache.org/
下载地址:https://rocketmq.apache.org/download/
有两个下载链接,一种是source,一种是二进制文件。选二进制文件就可以了。都是zip文件,下载后发送到linux上,使用unzip命令解压。
具体安装步骤也可参考官网中文教程:https://rocketmq.apache.org/zh/docs/quickStart/01quickstart
注意:官网用的源码包,也就是Source。解压完需要编译打包,本文使用二进制文件,解压后可直接启动。
解压后就可以启动了
启动RocketMQ
启动前需要去更改配置文件,因为RocketMQ默认分配的内存过大,会导致启动失败。
首先前往bin目录
nameserver的启动文件
vim runserver.sh
一般按这个改就可以了 -xms256m -xmx256m -xmn128m
我这里改的小一点,只给了200M内存。
borker的启动文件
vim runbroker.sh
1.启动NameService
在bin目录下有mqnamesrv脚本,用该脚本启动。
nohup sh mqnamesrv &
nohup启动,sh管理员权限,&后台运行。
nohup.out可以查看日志。
2.启动Broker
在bin目录下有mqborker脚本,用该脚本启动。
注意ip地址不要使用localhost,应该用你服务器的外网ip,否则发消息时会报错
nohup sh mqbroker -n 外网ip:9876 &
关闭RocketMQ
sh mqshutdown namesrv
sh mqshutdown broker
发送消息
开两个窗口
1.添加临时环境变量
export NAMESRV_ADDR=loaclhost:9876
2.在bin目录下发送消息
sh tools.sh org.apache.rocketmq.example.quickstart.Producer
3.在bin目录下接收消息
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer
遇到的问题
阿里云已经开放9876端口,却无法从外部网络发送消息
因为没有开放10911端口,这是borker的端口号。
开放了10911端口,还是无法发送消息
borker默认配的是阿里云服务器内网地址,需要修改配置文件
前往conf目录下
vim broker.conf
最下面添加配置
brokerIP1=外网地址
发送消息时,提示无法连接到内网ip的10911接口,但测试端口号可以访问
启动broker的时候不能使用
nohup sh mqbroker -n localhost:9876 &
应该指定外网ip来启动broker
nohup sh mqbroker -n 外网ip:9876 &
RocketMQ的网页控制台无法查看消息
需要开放broker的10909端口
10909是vip通道10911是非vip通道。
Tag消息消费失败
一个Group下的所有消费者的消费逻辑必须一致,就是说,一个Group下消费的Tag属性必须一样,否则会导致消费失败。