docker 安装 rocketmq-mqtt

  • rocketmq版本4.9.3 以上
  • rocketmq-mqtt版本:latest

rocketmq安装 

1.下载镜像

# rocketmq镜像
docker pull apache/rocketmq:5.1.4
# rocketmq dashboard 镜像
docker pull apacherocketmq/rocketmq-dashboard:latest

2.为RocketMQ容器创建一个网络,以便容器之间可以相互通信。

docker network create rocketmq-net

3.创建nameserver挂载目录

mkdir -p /app/rocketmq/namesrv/logs /app/rocketmq/namesrv/store

4.创建broker挂载目录

mkdir -p /app/rocketmq/broker/logs /app/rocketmq/broker/store

5.创建borke配置文件目录

mkdir -p /app/rocketmq/conf

 6.编辑配置文件 

vim /app/rocketmq/conf/broker.conf
# 集群名称
brokerClusterName = DefaultCluster
# 节点名称
brokerName = broker-a
# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0 
brokerId = 0
# Broker服务地址	内部使用填内网ip,如果是需要给外部使用填公网ip
brokerIP1 = 192.168.19.91
# Broker角色
brokerRole = ASYNC_MASTER
# 刷盘方式
flushDiskType = ASYNC_FLUSH
# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
deleteWhen = 04
# 以小时计算的文件保留时间 默认值72小时
fileReservedTime = 72
# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

7.运行nameserver 容器

docker run -d  --privileged=true \
--restart=always --name rocketmq-namesrv --network rocketmq-net  -p 9876:9876 \
-v /app/rocketmq/namesrv/logs:/root/logs \
-v /app/rocketmq/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" apache/rocketmq:5.1.4 sh mqnamesrv

注:sh mqnamesrv: 这是在容器中要运行的命令。它启动了RocketMQ的NameServer组件

8.创建borker 容器

 docker run -d --restart=always \
--privileged=true \
--network rocketmq-net \
--name rocketmq-broker \
-p 10911:10911 -p 10909:10909 \
-v /app/rocketmq/broker/logs:/root/logs \
-v /app/rocketmq/broker/store:/root/store \
-v /app/rocketmq/conf/broker.conf:/home/rocketmq/rocketmq-5.1.4/conf/broker.conf \
 apache/rocketmq:5.1.4 sh mqbroker  \
-c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf \
-n rocketmq-namesrv:9876
  • -d: 表示以守护进程方式运行容器。
  • --restart=always: 设置容器在异常退出时自动重启。
  • --network rocketmq-net: 将容器连接到名为 rocketmq-net 的网络。
  • --name rocketmq_broker: 指定容器的名称为 rocketmq_broker
  • -p 10911:10911 -p 10909:10909: 将容器内部的 10911 和 10909 端口映射到宿主机的相同端口,用于与其他组件通信。
  • apache/rocketmq:5.1.4 sh mqbroker: 使用 apache/rocketmq:5.1.4 镜像中的命令行工具 sh 来执行 mqbroker 命令。
  • -c /opt/rocketmqinc/rocketmq/conf: 指定配置文件的路径为 /opt/rocketmqinc/rocketmq/conf
  • -n rocketmq-namesrv:9876: 指定 NameServer 的地址和端口为 rocketmq-namesrv:9876

 9.运行dashboard 容器实例

docker run -d \
--privileged=true \
--restart=always \
--name rocketmq-dashboard \
--network rocketmq-net \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=rocketmq-namesrv:9876" \
-p 8080:8080 \
-t apacherocketmq/rocketmq-dashboard:latest

10.检查容器是否启动

docker ps --filter "name=rock*" --format "{{.ID}}\t{{.Names}}\t{{.Status}}"

11.访问 dashboard  ip:8080


部署说明

由于RocketMQ-MQTT项目依赖RocketMQ底层的多队列分发,RocketMQ从4.9.3版本开始支持这一特性,因此您需要确认RocketMQ的版本升级到4.9.3或更高版本,并且确保以下配置项已开启:

enableLmq = true 
enableMultiDispatch = true

修改配置后需重启broker。 

官网下载 rocketmq-mqtt 进行源码构建 

# 1. git 下载
git clone https://github.com/apache/rocketmq-mqtt

# 2.编译
cd rocketmq-mqtt
mvn -Prelease-all -DskipTests clean install -U 

rocketmq-mqtt 提取码 zlyhicon-default.png?t=N7T8https://pan.baidu.com/s/1UDfIu5e13ewnqaxOc0ubUA?pwd=zlyh

配置rocketmq-mqtt

1.编译后的文件复制到任意目录下并解压

# 创建rocketmq-mqtt 工作目录 
mkdir -p /app/rocketmq/rocketmq-mqtt
# 解压
unzip xxx.zip 
# 查看配置文件
cd xxx/conf

2.修改rocketmq-mqtt中 connect.conf, meta.conf , service.conf

# 1.修改 connect.conf
mqttPort=1884 # 默认1883
enablePrometheus=true

# 2.修改meta.conf
# 当前节点所运行的服务器ip
selfAddress=192.168.19.91:25000
#所有成员节点地址
membersAddress=192.168.19.91:25000

# 修改service.conf
# 用户名
username=test
# 密钥
secretKey=test
#NameServer 服务地址
NAMESRV_ADDR=192.168.19.91:9876
# 通知事件重试主题
eventNotifyRetryTopic=eventNotifyRetryTopic
# 通知事件重试主题
clientRetryTopic=clientRetryTopic
#元地址  meta所有节点ip:port。与meta.config中的membersAddress相同
metaAddr=192.168.19.91:25000

 3.进入rocketmq-broker 伪终端配置主题等信息

# 进入broker伪终端
docker exec -it rocketmq-broker /bin/bash

  4 创建主题:包括 eventNotifyRetryTopic 和 clientRetryTopic。 

语法: sh mqadmin updatetopic -c {cluster} -t {topic} -n {namesrv}

# 示例
sh mqadmin updatetopic -c DefaultCluster -t eventNotifyRetryTopic -n 192.168.19.91:9876
sh mqadmin updatetopic -c DefaultCluster -t clientRetryTopic -n 192.168.19.91:9876
sh mqadmin updatetopic -c DefaultCluster -t test-topic -n 192.168.19.91:9876

5 初始化元

  • 配置网关节点列表

sh mqadmin updateKvConfig -s LMQ -k LMQ_CONNECT_NODES -v {ip1,ip2} -n {namesrv}

sh mqadmin updateKvConfig -s LMQ -k LMQ_CONNECT_NODES -v 192.168.19.91 -n 192.168.19.91:9876
  • 配置一级主题列表

sh mqadmin updateKvConfig -s LMQ -k ALL_FIRST_TOPICS -v {topic1,topic2} -n {namesrv}

sh mqadmin updateKvConfig -s LMQ -k ALL_FIRST_TOPICS -v eventNotifyRetryTopic,clientRetryTopic,test-topic -n 192.168.19.91:9876
  • 在每个一级主题下配置通配符列表

sh mqadmin updateKvConfig  -s LMQ -k {topic} -v {topic/+}  -n {namesrv}

sh mqadmin updateKvConfig  -s LMQ -k eventNotifyRetryTopic -v eventNotifyRetryTopic/+ -n 192.168.19.91:9876

sh mqadmin updateKvConfig  -s LMQ -k clientRetryTopic -v clientRetryTopic/+ -n 192.168.19.91:9876

sh mqadmin updateKvConfig  -s LMQ -k test-topic -v test-topic/+ -n 192.168.19.91:9876

6.启动进程

cd bin
sh meta.sh start
sh mqtt.sh start

检查是否启动成功:

 netstat -tunlp | grep 1884
 netstat -tunlp | grep 25000

日志目录:

cd $HOME/logs 

7.客户端测试及结果

rocketmq官方文档icon-default.png?t=N7T8https://rocketmq.apache.org/zh/docs/quickStart/01quickstart


客户端工具连接 rocketmq-mqtt

Mqttx安装包icon-default.png?t=N7T8https://pan.baidu.com/s/1WEQVRa4J55F5ZX_Jh7C2Pw?pwd=zlyh

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值