RocketMQ学习相关链接

RocketMQ的官网:http://rocketmq.apache.org/

Github RocketMQ的下载地址:http://rocketmq.apache.org/release_notes/release-notes-4.9.1/ (注:不同版本需要去官网下载!)

RocketMQ快速起步文档:http://rocketmq.apache.org/docs/quick-start/

RockerMQ前置知识

RocketMQ 实现的是JMS,而RabbitMQ实现的是AMPQ协议,

RocketMQ 语言是Java,延迟毫秒级别。RabbitMQ 语言是elang,天生具有高并发特性,延迟纳秒级别

编译安装RocketMQ

环境准备

制作RocketMQ环境、可视化工具:Maven

服务器环境:JDK(64位,最好是有JDK8环境即可)

编译 RocketMQ

RocketMQ需要我们使用Maven编译,即可。

打包命令

第一步肯定是官网下source文件,然后进入第一级别文件 CMD,输入下方命令

mvn -Prelease-all -DskipTests clean install -U

打包结果

本次打包耗时 大约5分钟,编译过的,后续更新明显变快!

打包完成后,就去找 编译好的RocketMQ文件吧

RocketMQ编译后的位置是在项目位置的:

distribution/target/rocketmq-4.9.1/rocketmq-4.9.1

服务器安装RocketMQ

这个就是我们自己的rocketmq,上一级文件夹有压缩好的,自己上传到Linux服务器吧

# Linux 解压命令
tar -zxvf 压缩包名

启动RocketMQ - Namesrv 与 Brokrer

启动 Name Server 注意需要64位Java环境

无Java环境Linux 使用下面命令直接无结果且卡住命令行,我直接sh bin/mqnamesrv 才看到报错,我没有javahome,为了更好的使用请不要用jdk11,请使用jdk8

# 搜索JDK
yum search java|grep jdk

# 安装JDK
yum install java-1.8.0-openjdk-devel.x86_64

# 卸载yum安装的JDK
yum -y remove java

# Linux 后台启动 name server
nohup sh bin/mqnamesrv &

# 或者进入bin目录启动 (不知道为啥不可用)
nohup runserver.sh &

# 查看日志是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log

看到boot success 即成功!

The Name Server boot success. serializeType=JSON

启动Broker

他娘的到处是坑,一上午全处理这些杂七杂八的问题了,注意:Broker启动默认是通过sh脚本启动,里么指定了JVM启动参数,如JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g" 你服务器一共就4g内存,肯定跑不起来,修改一下再次尝试吧!你需要修改runbroker.sh、runserver.sh(这个服务配置,不同版本内容不一样)

# 不指定配置文件启动,第一次推荐用这个
nohup sh bin/mqbroker -n localhost:9876 &


# 指定配置文件启动
nohup sh bin/mqbroker -c ./conf/broker.conf &


# 查看日志
tail -f ~/logs/rocketmqlogs/broker.log 
# 日志位置在 
cd /root/logs/rocketmqlogs

看到类似boot Success 就启动成功了!

The broker[VM-16-4-tlinux, 10.0.16.4:10911] boot success. serializeType=JSON and name server is localhost:9876

关闭服务器 brokernamesrv

# 先关闭broker
> sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker(36695) OK

# 再关闭namesrv
> sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK

发送和接收消息

在发送/接收消息之前,我们需要告诉客户端名称服务器的位置。RocketMQ 提供了多种方法来实现这一点。为简单起见,我们使用环境变量NAMESRV_ADDR

 # 前置操作
 > export NAMESRV_ADDR=localhost:9876

 # 启动生产者生产消息,生产完毕,进程就终止了
 > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 SendResult [sendStatus=SEND_OK, msgId= ...


 # 启动消费者消费,注意消费者去消费消息不会主动终止,他会保留进程以监听消息
 > sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...

RocketMQ Connect Console

特别说明:Connect Console 只是代替了原始的mqadmin命令,这里我不过多讲解,直接跳过

# bin 目录下有个mqadmin文件,这个就是执行命令的文件,后面跟着非常多种的参数
# 格式
./bin/mqadmin {command} {args}

RocketMQ Connect Console 可视化界面地址:https://github.com/apache/rocketmq-externals/tree/release-rocketmq-console-1.0.0

老规矩 直接cmd进入 pom文件同级的位置,直接打包

mvn clean package -Dmaven.test.skip=true

成功,接下来放到服务器去启动!

nohup java -jar rocketmq-console-ng-1.0.0.jar --server.port=9877 --rocketmq.config.namesrvAddr=127.0.0.1:9876 &


# 说明,namesrvAddr是RocketMQ的地址。RocketMQ Connect Console启动时,确保开启namesrvAddr 和 Broker

# 开启防火墙
firewall-cmd --zone=public --add-port=9877/tcp --permanent
# 重载防火墙
firewall-cmd --reload

去访问吧!http://127.0.0.1:9877/#/

成功!

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤