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
关闭服务器 broker 与 namesrv
# 先关闭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
成功!
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
评论(0)