zoukankan      html  css  js  c++  java
  • 初始mqtt服务

    MQTT入门

    概念

    mqtt意为消息队列遥测传输,是IBM开发的一个即时通讯协议。由于其维护一个长连接以轻量级低消耗著称,所以常用于移动端消息推送服务开发。

    协议格式

    mqtt协议控制报文的格式包含三部分:
    以固定报头、可变报头和有效载荷,其中固定报文头是所有控制报文都有的,可变报头和有效载荷都是部分控制报文。
    mqtt是二进制的协议,控制字段是精确到Bit级别的,单纯这一点就足以为其在物联网领域占据一席之地。mqtt是不支持分包等机制,并不适宜一些数据包特别大的应用场景。

    mqtt特性

    • 使用发布/订阅消息模式,提供一对多消息发布;
    • 对负载内容屏蔽的消息传输;
    • 使用TCP/IP进行网络连接;
    • 具有三种消息发布服务质量选项:
    • 1."至多一次",通常app的推送使用的是这种模式,也就是说,如果移动设备在消息推送的时候没有联网,那么再次联网就不会收到通知了;
    • 2."至少一次",可以确保消息收到,但消息可能会重复;
    • 3."只有一次",确保消息到达一次,比如计费系统,如果出现消息重复或者丢失会导致系统结果不正确的问题。
    • 小型传输,开销很小,协议交换最小化,以降低网络流量;
    • 通知有关各方客户端异常中断的机制。

    mqtt协议实现方式

    发布者----发布消息---->代理-------推送消息----->订阅者
    发布者----发布消息---->代理<------订阅消息-----订阅者
    

    在mqtt协议中有三种身份:

    • 发布者(publish):发布者是客户端,可以进行发布消息
    • 代理(broker):代理指的是服务器,比较有名的是emqtt,当前可以其他成熟的框架去搭建mqtt服务
    • 订阅者(subscribe):指的客户端,不过发布者同时也可以是订阅者。

    mqtt服务端和客户端实现的功能

    mqtt服务端
    • 接受来自客户端的网络连接;
    • 接受客户发布的应用信息;
    • 处理来自客户端主题订阅和退订请求;
    • 向订阅的客户端转发应用程序消息
    mqtt客户端
    • 给其他客户端发布订阅的消息;
    • 订阅其他客户端发布的消息;
    • 退订和订阅主题;
    • 断开服务器连接

    mqtt协议中的方法

    • connect:等待服务器建立连接;
    • disconnect:等待客户端完成所做的工作,并与服务器断开TCP/IP会话;
    • subscribe:主题订阅;
    • unsubscribe:主题取消订阅;
    • publish:发送消息

    mqtt的安装

    # sudo yum install epel-release
    # sudo yum install mosquitto mosquitto-clients
    # sudo systemctl start mosquitto
    mqtt默认是以1883端口运行的
    

    mqtt简单使用

    mosquitto的配置文件为/etc/mosquitto/mosquitto.conf/
    1.添加密码配置并且不允许匿名用户登录
    # sudo vim /etc/mosquitto/mosquitto.conf
    allow_anonymous false  #不允许匿名登录
    password_file /etc/mosquitto/pwfile  #配置用户密码文件
    acl_file /etc/mosquitto/aclfile  # 配置topic和用户
    
    2.添加用户信息
    # mosquitto_passwd -c /etc/mosquitto/pwfile ceshi
    # mosquitto_passwd /etc/mosquitto/pwfile ceshi2
    分别添加用户ceshi和ceshi2
    
    3.添加topic和用户的关系(权限配置)
    # sudo vim /etc/mosquitto/aclfile
    # ceshi只能发布V222为前缀的主题,订阅V333开头的主题
    user ceshi
    topic write V222/#
    topic read V333/#
    # ceshi2只能订阅以V222为前缀的主题
    user ceshi2
    topic read V222/#
    
    - write:发布订阅
    - read:接受订阅
    
    4.启动
    -c :指定配置文件启动
    -d: 后台运行
    mosquitto -c /etc/mosquitto/mosquitto.conf -d 
    
    5.测试
    发布订阅:mosquitto_pub
    接受订阅:mosquitto_sub
    参数:
    -h :服务器主机
    -t :指定主题
    -u :用户名
    -P : 密码
    -i :客户端id
    -m :发布的消息内容
    
    # mosquitto_sub -h localhost -t "V222" -u ceshi2 -P 123456
    
    # mosquitto_pub -h localhost -t "V222" -m "Hello world" -u ceshi -P 123455
    
    配置文件解析
    # 系统状态的刷新时间
    # sys_interval 10
    
    # 系统资源的回收时间,0表示尽快处理
    # store_clean_interval 10
    
    # 服务进程的pid
    # pid_file /var/run/mosquitto.pid
    
    # 服务进程的系统用户
    # user mosquitto
    
    #  客户端心跳消息的最大并发数
    # max_inflight_messages 10
    
    # 客户端心跳消息缓存队列
    # max_queued_messages 100
    
    # 用于设置客户端长连接的过期时间,默认永不过期
    # persistent_client_expiration
    
    # 服务绑定的IP地址
    # bind_address
    
    # 服务绑定的端口
    # port 1883
    
    # 消息自动保存的间隔时间
    # autosave_interval 1800
    
    # 消息自动保存功能的开关
    # autosave_on_changes false
    
    # 持久化功能的开关
    # persistence true
    
    # 持久化DB文件
    # persistence_file mosquitto.db
    
    # 持久化DB文件目录
    # persistence_location /var/lib/mosquitto/
    
    # 4种日志模式: stdout、stderr、syslog、topic
    # none:则表示不记录日志
    log_dest none
    # 选择日志的级别
    # log_type error
    # log_type warning
    # log_type notice
    # log_type information
    
    # 是否记录客户端连接信息
    # connection_messages true
    
    # 是否记录日志时间
    # log_timestamp true
    
    # 允许匿名用户
    # allow_anonymous false
    
    # 用户/密码文件,默认格式为:user/passwd
    # password_file /etc/mosquitto/passwd
    
    
  • 相关阅读:
    通过Powershell开启RDP
    映射网络驱动器
    简易图书管理系统
    使用IDEA快速创建Spring Boot项目
    oracle11g安装步骤详细图文教程
    使用JDOM创建XML文档
    使用JDOM解析XML文档
    HTML+CSS之金立官网部分实现
    webstorm2019安装与使用详细教程
    第二章 JavaScript基础指令
  • 原文地址:https://www.cnblogs.com/l-mac/p/11486539.html
Copyright © 2011-2022 走看看