当前位置:首页 » 《随便一记》 » 正文

Python Mqtt 二次封装与模块化开发_qq_23607397的博客

1 人参与  2022年03月13日 14:50  分类 : 《随便一记》  评论

点击全文阅读


使用pip安装封装好的DXR插件

pip install DXR

安装完成后会得到两个包分别为Dxr_mqtt以及Dxr_log,使用下列方式导入包内所有函数,也可以单独引用相应内容

from Dxr_mqtt.dxr_mqtt_2 import *
from Dxr_mqtt.dxr_mqtt import *
from Dxr_log.log import *

dxr_mqtt以及dxr_mqtt_2区别在于2使用了qos为2的方式进行发布话题和订阅话题,dxr_mqtt使用qos为0的方式进行发布话题和订阅话题,可以根据业务具体需求进行选择

MQTT设计了一套保证消息稳定传输的机制,包括消息应答、存储和重传。在这套机制下,提供了三种不同层次QoS(Quality of Service):

  • QoS0,At most once,至多一次;
  • QoS1,At least once,至少一次;
  • QoS2,Exactly once,确保只有一次。

QoS 是消息的发送方(Sender)和接受方(Receiver)之间达成的一个协议:

  • QoS0 代表,Sender 发送的一条消息,Receiver 最多能收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,也就算了;
  • QoS1 代表,Sender 发送的一条消息,Receiver 至少能收到一次,也就是说 Sender 向 Receiver 发送消息,如果发送失败,会继续重试,直到 Receiver 收到消息为止,但是因为重传的原因,Receiver 有可能会收到重复的消息;
  • QoS2 代表,Sender 发送的一条消息,Receiver 确保能收到而且只收到一次,也就是说 Sender 尽力向 Receiver 发送消息,如果发送失败,会继续重试,直到 Receiver 收到消息为止,同时保证 Receiver 不会因为消息重传而收到重复的消息。

 dxr_mqtt包类和方法的介绍,(dxr_mqtt_2一致,只是qos不一样)

# setServerUrl(选用)
# 用于设置mqtt连接的服务器,
# 默认url为127.0.0.1,默认clientID为随机时间戳,
# 根据也无需要进行相应修改
setServerUrl('xx.xx.xx.xx', clientID='server')
# dxr_mqtt_2中方法为以下方法内容,后续所有方法都相似,方法名+'_2'
# clientID 不能和上面一样,会有冲突
setServerUrl_2('39.101.69.111', clientID='server_2')
# 设置是否打印mqtt日志,默认为False
# setMqttLog(False)
# Dxr_Publisher(消息发布者)
# 申请一个消息发布者后
# 可以直接使用发布至调用publish方法进行话题发布
dxr_publish = Dxr_Publisher('/cmd_vel')
# 直接使用publish方法进行消息发布(消息为json对象)
dxr_publish.publish({
    "op": "test",
    "cmd": '/test',
    "msg": {
        "test": 'test'
    }
})
# 订阅消息回调方法
def callback_test1(msg):
    print('test1', msg)
# 申明一个订阅者
# topic 订阅一个话题
# callback 定义一个回调函数用于接受话题消息
dxr_subscriber = Dxr_Subscriber('/test1', callback=callback_test1)

dxr_log包类和方法的介绍

# log存放在项目下的log文件加下,log文件夹不存在会自动创建文件夹
# 第一个版本还无法设置日志存储时长,目前为3天一覆盖,后续会更新
# 设置相应类型日志是否打印在终端
setLogPrint(info=True, debug=True, error=True)
# 日志存储在all.log中
print_info('test')
# 日志存储在debug.log中
print_debug('test')
# 日志存储在error.log以及all.log中
print_error('test')

其它介绍,上篇文章有介绍如何安装mosquitto,本篇会讲解下如何使用mosquitto查看DXR插件包中订阅和发布的相应客户端

root@iZzpmczawpjrqvZ:~# mosquitto_sub -t /topic/#

server_pub:

/cmd_vel

/test2

/test3

server_sub:

/test1

/test2

/test3

server_2_pub2:

/test4

/pub_test2

 使用mosquitto_sub -t /topic/#查看所有正在发布和订阅者发布和订阅的话题类型

也可以使用mosquitto_sub -t /topic/<client_id> (client_id为订阅发布这的client_id)来查看特定发布者发布和订阅的话题

如果发布者意外掉线后,发布和订阅的话题会被清空,也可以根据这个方式来检验发布订阅者程序是否正常运行

根据上述查看到的话题使用mosquitto_sub -t <topic>查看具体话题发布的消息

也可以使用mosquitto_pub -t <topic> -m <msg>消息内容来发布一条测试消息给相应话题


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/36143.html

消息  话题  发布  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 重生到和绑定了“脱了么”系统的室友对峙的那天好评_刘倩江元陈晨免费品鉴_小说后续在线阅读_无删减免费完结_
  • 热文推荐薛沉羿夏盛妍附加(契约小野妻:总裁,撩一个)(薛沉羿夏盛妍)最新章节列表
  • 闫念安小说小说全集+延伸+完本(天降萌宝:爹地,妈咪又跑了)畅享在线阅读
  • 我无名分,我不多嗔小说完结篇(陆景铄林悠悠)(我无名分,我不多嗔)全书无套路阅读无广告小说大结局
  • 奈何春风不曾渡我虐心反转_童烟沈叙白陆依在线看_小说后续在线阅读_无删减免费完结_
  • 鹿雪附加完整在线阅读(小祖宗她带着双宝闹翻天)最近更新列表
  • 你要战功我给你,妖兽入侵你哭啥高质量好文叶天凌筱完本_你要战功我给你,妖兽入侵你哭啥高质量好文(叶天凌筱)
  • 夫君和小三霸占了我的将军府,我杀疯了阅读_雪儿谭绍木兰全集_小说后续在线阅读_无删减免费完结_
  • 鹿溪小说(鹿溪)终章+番外(穿进恐怖游戏后,我和反派HE了)一口气阅读
  • 完结文留给儿子的副卡月月刷爆,他却因睡桥底被送进收容所列表_完结文留给儿子的副卡月月刷爆,他却因睡桥底被送进收容所(娄墨霆宋佑轩)
  • 你活着,却死在我等你的第三年后续+番外_谨言佳佳温以宁全集_小说后续在线阅读_无删减免费完结_
  • 相思溺于夏时雨小说(裴景澈初念可)章节目录+起始篇章(相思溺于夏时雨)全章无套路在线

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1