RocketMQ MQTT 快速搭建验证

来自业务的需求,需要快速搭建一套支持 MQTT 协议的消息系统。

前期准备:

官方地址:https://github.com/apache/rocketmq-mqtt
RocketMQ从4.9.3 版本开始才支持该功能,所以需要先检查 RocketMQ 的版本是否满足。
RocketMQ 部署参考:https://rocketmq.apache.org/zh/docs/4.x/deployment/01deploy
JDK 版本: 1.8.x
在 RockerMQ Broker 的配置中增加如下配置,开启多队列分发特性:

enableLmq = true 
enableMultiDispatch = true

RocketMQ 的部署忽略(网上文章很多),下面开始 RocketMQ MQTT 的部署、验证

构建 RocketMQ MQTT

下载工程:
最新代码:

git clone https://github.com/apache/rocketmq-mqtt

发布版本:
https://github.com/apache/rocketmq-mqtt/releases

构建工程:
进入到代码根目录,执行 mvn 命令

cd rocketmq-mqtt
mvn -Prelease-all -DskipTests clean install -U 

配置 RocketMQ MQTT:

cd distribution/target/xxx

target 目录一直往下,看到
在这里插入图片描述
进入 conf:

cd conf

配置 meta.conf
在这里插入图片描述
selfAddress 部署 meta 的地址
memberAddress 可以是一组部署了 meta 的地址
我这里都是单节点

配置 service.conf
在这里插入图片描述
username 和 secretKey 在发布、订阅时认证需要
NAMESRV_ADDR ns 地址
eventNotifyRetryTopic 事件通知消息重试 Topic,提前创建
clientRetryTopic 客户端消息重试 Topic,提前创建
metaAddr 就用 meta.conf 中的地址

创建 Topic:

mqadmin updateTopic -n 10.22.34.179:9876 -c DefaultCluster -t eventNotifyRetryTopic
mqadmin updateTopic -n 10.22.34.179:9876 -c DefaultCluster -t clientRetryTopic
mqadmin updateTopic -n 10.22.34.179:9876 -c DefaultCluster -t testTopic

初始化元数据:
配置网关:

mqadmin updateKvConfig -s LMQ -k LMQ_CONNECT_NODES -v 10.22.34.179 -n 10.22.34.179:9876

配置一级 Topic:

mqadmin updateKvConfig -s LMQ -k ALL_FIRST_TOPICS -v eventNotifyRetryTopic,clientRetryTopic,testTopic -n 10.22.34.179:9876

配置每个一级 Topic 的通配符:

mqadmin updateKvConfig -s LMQ -k eventNotifyRetryTopic -v testTopic/+ -n 10.22.34.179:9876
mqadmin updateKvConfig -s LMQ -k clientRetryTopic -v testTopic/+ -n 10.22.34.179:9876
mqadmin updateKvConfig -s LMQ -k testTopic -v testTopic/+ -n 10.22.34.179:9876

踩坑一: 后面新增的 Topic 没走配置一级 Topic 这步,mqtt 消费订阅发布不正常。
注意: 后期新增 Topic,首先需要创建、然后配置一级 Topic、然后配置一级 Topic 的通配符,否则会出现发布订阅预期外的情况。
以上步骤走完后,就可以启动工程了。

启动 RocketMQ MQTT:

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

命令执行后确认是否执行成功:
jps -l 可以看到下面两个进程:
org.apache.rocketmq.mqtt.cs.starter.Startup
org.apache.rocketmq.mqtt.meta.starter.MetaStartup
查看端口是否被监听:
meta: 25000
mqtt: 1883

如果端口没被监听或者发布订阅有报错,到 $HOME/logs/xx.log 查看具体日志。
在这里插入图片描述
踩坑二: 进程存在,1883 一直没被监听,看启动日志是连 ns 出现了超时。
踩坑三: 部署到服务器上,发布时用户名和密码填正确的也报错。
在这里插入图片描述

原因:执行命令后,需要使用到 $JAVA_HOME/jre/lib/ext/ 文件夹下的相关 jar 包,但是由于系统的原因,无法使用该包下的 jar 包
解决:手动将 $JAVA_HOME/jre/lib/ext/sunjce_provider.jar 包复制到 target/xx/lib 目录下即可

调试 RocketMQ MQTT:

示例代码:https://github.com/apache/rocketmq-mqtt/tree/main/mqtt-example/src/main/java/org/apache/rocketmq/mqtt/example
发布消息:
在这里插入图片描述
订阅消息:

客户端调试工具:MQTTX
MQTTX 发布订阅消息:
在这里插入图片描述

RocketMQ MQTT 的资料在网上比较少,我也会及时更新在使用过程中遇到的坑及解决办法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kube-prometheus部署到 k8s 集群

文章目录 **修改镜像地址****访问配置****修改 Prometheus 的 service****修改 Grafana 的 service****修改 Alertmanager 的 service****安装****Prometheus验证****Alertmanager验证****Grafana验证****卸载****Grafana显示时间问题** 或者配置ingress添加ingress访问grafana…

JAVA前端快速入门基础_javascript入门(02)

写在前面:本文用于快速学会简易的JS,仅做扫盲和参考作用 1.JavaScript函数 什么是函数:执行特定任务的代码块 1.1定义: 使用function来进行定义(类似于python里面的def 或者java和c里面的void,int这些返回类型开头)。定义规则如下: func…

物联网D1——建工程,配环境,注意事项

1.STLink、JLink、USB等驱动配置keil环境配置——下载芯片对应型号的包——导入库函数源文件、Core内核文件、对应芯片系统文件。 2.学会看芯片手册 3.在STM32微控制器中,CRH通常指的是控制寄存器高位(Control Register High)。 在这种情况下…

Linux修改文件权限命令 chmod

【例子引入】 以下面命令为例: chmod 777 Random.py 当写入下面名为Random.py的代码后: 如果直接运行,会显示权限不够 当输入 chmod 777 Random.py 更改权限后,才能够正常运行 在终端中输入 这条命令是关于Linux或Unix-like系…

[二叉树] 二叉树的前中后三序遍历#知二求一

标题:[二叉树] 二叉树的前中后三序遍历#知二求一 水墨不写bug (图片来源于网络) 正文开始: 其实这一类题就是考察对二叉树的结构理解,此类题目的二叉树一般通过数组传入,我们只需根据二叉树的就够特点对数…

JAVA同城服务美容美发到店服务上门服务系统源码微信小程序+微信公众号+H5+APP

随着科技的飞速发展,互联网和移动互联网已经渗透到我们生活的方方面面,同城服务美容美发到店服务上门服务系统应运而生,为整个行业带来了巨大的变革和无限的可能。该系统的重要性和优势不言而喻,对于行业发展和用户需求的影响深远…

基于YOLOV8+Pyqt5无人机航拍太阳能电池板检测系统

1.YOLOv8的基本原理 YOLOv8是一种前沿的目标检测技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性,在精度和速度方面都具有尖端性能。在之前YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,…

字符串函数、内存函数——补充

目录 前言 1、strchr函数 1-1 函数介绍 1-1-1 函数功能 1-1-2 函数原型 1-1-3 函数参数 1-1-4 所属库 1-1-5 函数返回值 1-2 函数简单使用 1-3 函数使用场景 1-4 函数的使用总结 1-4-1 注意事项 2、strrchr函数 2-1 函数介绍 2-1-1 函数功能 2-1-2 函数原型 2…

【18】JAVASE-IO专题【从零开始学JAVA】

Java零基础系列课程-JavaSE基础篇 Lecture:波哥 Java 是第一大编程语言和开发平台。它有助于企业降低成本、缩短开发周期、推动创新以及改善应用服务。如今全球有数百万开发人员运行着超过 51 亿个 Java 虚拟机,Java 仍是企业和开发人员的首选开发平台。…

时间序列分析-无模型

本节内容介绍了无模型的时间序列分析方法,包括时间序列作趋势图、逐年分解、时间序列分解、直方图、ACF与PACF图,主要是作图。 首先导入数据和对应的库: import pandas as pd import numpy as np import matplotlib.pyplot as plt import se…

与Apollo共创生态:让汽车更聪明,让出行更简单

目录 前言Apollo X 企业解决方案Studio X 企业协同开发工具链Apollo开放平台携手伙伴共创生态Apollo开发平台生态共创计划 前言 百度2013年开始布局自动驾驶,2017年推出全球首个自动驾驶开放平台Apollo。目前百度Apollo已经在自动驾驶、智能汽车、智能地图等领域拥有…

Spring6 当中 Bean 的生命周期的详细解析:有五步,有七步,有十步

1. Spring6 当中 Bean 的生命周期的详细解析:有五步,有七步,有十步 文章目录 1. Spring6 当中 Bean 的生命周期的详细解析:有五步,有七步,有十步每博一文案1.1 什么是 Bean 的生命周期1.2 Bean 的生命周期 …

Flask 3 保姆级教程(一):快速上手

一、创建项目 PyCharm 中新建项目 创建完成后会出现这么个项目 以下是代码解析: # 导入了 Flask 类 from flask import Flask# 创建了一个 Flask web 应用的实例,并将其赋值给变量 app # __name__ 是一个特殊的 Python 变量,它表示当前模块…

第49期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

变电站自动化控制系统应用案例分析

变电站自动化控制系统介绍 变电站自动化控制系统用于大中型企业变电站项目,这类企业变压器多,日耗电量大。把多个变压器集中到一个电器平台上,集中管理分析,优化厂区用电管理,从而达到集中控制、集中分析、集中管理的…

VOS系统录音文件REC转MP3,REC录音转WAV与WAV转MP3具体项目中实现方式,以及占用空间变化!

前面讲解了VOS3000系统的录音REC转MP3的安装步骤,不清楚的,可以移步这里查看:http://t.csdnimg.cn/OXNT9 或者 点击这里查看安装步骤,下面继续讲下他们的使用方法,以及实际项目中的运用,首先我们需要明确我…

Android中的屏幕刷新机制(动画视频形象说明机制)

一,刷新率和帧率,60hz和60fps的区别 在Android系统中,刷新率和帧率是两个不同的概念,它们各自在显示过程中扮演着不同的角色。以下是对它们的详细解释: 刷新率,单位是Hz,是指屏幕在一秒内刷新…

STK与matlab交互 Astrogator模块(13)

一、背景介绍 在本文介绍一个场景,五颗蓝方卫星和一颗红方卫星,在两个小时之内,使用神经网络等人工智能算法,实现一个轨道追踪的问题,其中接口输入是六颗卫星在J2000坐标系下的坐标,接口输出是该六颗卫星沿…

windows下安装onlyoffice

文章目录 1、 安装ErLang2、 安装rabbitmq3、 安装postgresql4、 安装onlyoffice(社区版) 1、 安装ErLang 下载地址:https://erlang.org/download/otp_win64_24.2.exe opt_wind64_24.2.exe 直接运行,一步一步安装 2、 安装rabbitmq 下载地址&#xf…

.NET C# ORM 瀚高数据库

SqlSugar ORM SqlSugar 是一款 老牌 .NET开源ORM框架,由果糖大数据科技团队维护和更新 ,开箱即用最易上手的ORM 优点 :【生态丰富】【高性能】【超简单】 【功能全面】 【多库兼容】【适合产品】 【SqlSugar视频教程】 支持 &#xff1a…