zoukankan      html  css  js  c++  java
  • 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

    学之如大海汪洋,薄积厚发,后发制人,大学之道也。
  • 相关阅读:
    递归函数及Java范例
    笔记本的硬盘坏了
    “References to generic type List should be parameterized”
    配置管理软件(configuration management software)介绍
    WinCE文件目录定制及内存调整
    使用Silverlight for Embedded开发绚丽的界面(3)
    wince国际化语言支持
    Eclipse IDE for Java EE Developers 与Eclipse Classic 区别
    WinCE Heartbeat Message的实现
    使用Silverlight for Embedded开发绚丽的界面(2)
  • 原文地址:https://www.cnblogs.com/qianxiaoruofeng/p/15659264.html
Copyright © 2011-2022 走看看