【踩坑】MQTT消息中间件开发之topic的坑

首先普及下博主在工程项目开发中的基本情况,在一个叫做A的模块中,推送消息的topic采用‘to’开头,接收其它模块信息的topic是‘from’开头。

后来需要增加一个模拟服务端,所以开发了B模块用作仿真服务,B服务的推送消息的topic采用‘from’开头,接收其它模块信息的topic是‘to’开头,可以发现刚好和A模块是反过来的。

A模块是先开发的,一直运行良好,B模块后开发的,因为很多基础代码和A的情况很类似,所以迁移了A的大部分代码,然后做了定制化的微调。事实上微调不是太花费时间和精力,而微调之后的调试让博主费了好一番功夫,接下来博主直奔主题,分享下在微调时埋的雷以至于在调试时踩的坑。

1、B模块依然中依然使用A模块的topic规则;
2、B模块订阅到到信息之后做逻辑处理时,由于是仿真服务,部分逻辑需要引入sleep函数,导致接收消息的线程因此而频繁的断开重连。

对于第1条的详细介绍:

# A模块的topic的示意代码
A.receive = "from/v1/#" 

A.send = "to/v1"

当B模块在调整这处代码的时候,应该改成如下【注:‘#’通配符很关键,一定要加】

# B模块的topic的示意代码
B.send = "from/v1" 

B.receive = "to/v1/#"

对于第2条的详细介绍:

可将含有sleep的逻辑分装在一个函数方法中,然后掉进线程池运行,不影响主线程的执行,进而也不会发生断开重连的情况。

以上就是博主在mqtt的开发上所踩的一个坑,后续有踩到新的坑了再和各位读者朋友们相约下篇采坑文章。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值