• mqtt 在生产中的配置使用实例


    https://www.cnblogs.com/qianxiaoruofeng/p/15659264.html
    消息队列是计算机中不可或缺的一个重要角色,用好mq 能给我们的工作减少更多的工作量,提高办公的效率。

    什么是mqtt ,先了解一下。

    https://mqtt.org/


    https://www.emqx.com/zh

    下载服务端程序、和客户端的程序

    serve 端,今天我们用的是windows版本的mosquitto试验
    https://mosquitto.org/download/

    你也可以选择emqx作为更多的集成支持的mqtt
    https://www.emqx.com/zh/try?product=broker

    安装 mqtt server 必须以管理员身份安装,否者后面没法使用启动不成功。

    上图是mosquitto 安装成功后目录结构

    目录下面有几个安装阅读的文件,你一看便知文件的作用

    配置mqtt

    mqtt 支持默认不配置可以启动,但是生产中不安全,存在数据泄露的风险,所以我们就讲一下他的配置。
    我们就在这里讲最低的一个账户密码配置,不让所有人都能登录。

    在mosquitto.conf配置文件 设置不允许任何人登录,且设置登录用户和指定密码文件还要设置权限acl文件
    allow_anonymous允许匿名

    password_file密码文件

    acl_file访问控制列表

    allow_anonymous false
    password_file C:/Program Files/mosquitto/pwfile.example
    user mac
    acl_file C:/Program Files/mosquitto/acl
    


    在pwfile 中添加用户,
    指令如下:

    #mosquitto_passwd -c pwfile mac
    
    

    你要输入你电脑的账号密码,否者这个borker设备无法登录。
    输入两次之后正常显示之后,说明你的用户配置正确

    密码文件里面就多出这样一行。

    acl 文件是这样的。
    然后通过配置文件启动mqttserver

    mosquitto -c mosquitto.conf 
    

    这样启动mqttserver
    这里可能会多次权限不够什么的,你就要主义配置文件是否正确了。

    也可以直接点击exe启动不带参数启动,那样不安全,很多时候会出现闪退,你要注意。

    下面是设置mqtt 订阅,
    用的是这个程序

    #mosquitto_sub -h 192.168.1.100 -t mtopic -u username -P passwd
    
    

    下面是设置mqtt 发布,

    #mosquitto_pub -h 192.168.1.100 -t mtopic -u username -P passwd -m "test"
    


    我们来mqtt 工具里面来设置一下,做订阅和发布的事情,it's creazy 。


    这里要保持客户端id不一样,否者这个本机一台机器就会一个上线,一个下线互相抢断。

    关于topic 设置

    一个客户端订阅,一个客户端发布,就可以看到,消息流的产生了。
    还要注意一个topic 设置的格式。
    (1)主题层级分隔符 / : 用于分割主题层级,/分割后的主题,这是消息主题层级设计中很重要的符号。 比方说: aaa/bbb和 aaa/bbb/ccc 和aaa/bbb/ccc/ddd ,这样的消息主题格式,是一个层层递进的关系,可通过多层通配符同时匹配两者,或者单层通配符只匹配一个。 这在现实场景中,可以应用到:公司的部门层级推送、国家城市层级推送等包含层级关系的场景。
    (2) 单层通配符 +: 单层通配符只能匹配一层主题。比如: aaa/+ 可以匹配 aaa/bbb ,但是不能匹配aaa/bbb/ccc。 单独的+号可以匹配单层的所有推送;
    (3) 多层通配符 #: 多层通配符可以匹配于多层主题。比如: aaa/# 不但可以匹配aaa/bbb,还可以匹配aaa/bbb/ccc/ddd。 也就是说,多层通配符可以匹配符合通配符之前主题层级的所有子集主题。单独的#匹配所有的消息主题.
    注: 单层通配符和多层通配符只能用于订阅(subscribe)消息而不能用于发布(publish)消息,层级分隔符两种情况下均可使用。

    你们都知道mqtt协议最基本的思想就是发布订阅,也就是一个设备发布多个设备订阅。
    设备发布者发布一个主题,其它设备经过订阅能够得到主题发布者发送的消息。
    网关做为发布者发布两个主题:
    通配:dev/用户ID/公司ID/项目ID/设备MAC/#
    主题一:dev/用户ID/公司ID/项目ID/设备MAC/0
    该主题为设备订阅的主题,用来发送设备信息给用户,只能为指定设备发布
    主题二:dev/用户ID/公司ID/项目ID/设备MAC/1
    该主题为设备订阅的主题,用户用来发送信息给设备,该主题任何用户可发布消息
    这里的 “设备MAC” 地址是惟一的。web

    设备运行后,首先,订阅主题二
    而后:
    利用主题一,定时发布消息。
    利用主题二,不断的接收消息。svg

    用户运行后,首先,订阅主题一
    而后利用主题一,接收设备发送的消息。
    利用主题二,发送控制信息。xm
    参考文档:
    https://mosquitto.org/documentation/
    https://www.cnblogs.com/saryli/p/9818721.html
    https://www.jianshu.com/p/d96239675831
    https://www.shangmayuan.com/a/59eb0278bba241878c28fbf6.html

    学之如大海汪洋,薄积厚发,后发制人,大学之道也。
  • 相关阅读:
    UML统一建模语言笔记
    从零开始学JavaWeb
    也谈微信小程序
    Memcached,你懂的
    一个简单的配置管理器(SettingManager)
    我的AngularJS 学习之旅
    .NET Core 跨平台
    ASP.NET Core 中间件自定义全局异常处理
    面试必考题——递归解题套路
    程序员着装指南
  • 原文地址:https://www.cnblogs.com/qianxiaoruofeng/p/15659264.html
Copyright © 2020-2023  润新知