zoukankan      html  css  js  c++  java
  • MQTT协议学习研究 & Mosquitto简要教程(安装和使用)

        若初次接触MQTT协议,可先理解以下概念:

    【MQTT协议特点】——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制。
    【MQTT协议角色】——在RESTful架构的物联网系统,包含两个角色客户端和服务器端,而在MQTT协议中包括【MQTT协议消息】——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。
    【MQTT协议主题】——MQTT中的主题可理解为相同类型或相似类型的消息集合。
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      前言转自 http://blog.csdn.net/xukai871105/article/details/39252653
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     
    1、获取&安装

    Mosquitto提供了Windows、Linux以及qnx系统的版本,安装文件可从 http://mosquitto.org/files/binary/ 地址中获取。Windows系统下的安装过程非常简单,我们甚至可以把Mosquitto直接安装成为系统服务;但是,在实际应用中,我们更倾向于使用Linux系统的服务器,接下来我们就将重点介绍Linux版Mosquitto的安装方法。

    在Linux系统上安装Mosquitto,本人建议大家使用源码安装模式,最新的源码可从 http://mosquitto.org/files/source/ 地址中获取。解压之后,我们可以在源码目录里面找到主要的配置文件config.mk,其中包含了所有Mosquitto的安装选项,详细的参数说明如下:
    # 是否支持tcpd/libwrap功能.
    #WITH_WRAP:=yes
    
    # 是否开启SSL/TLS支持
    #WITH_TLS:=yes
    
    # 是否开启TLS/PSK支持
    #WITH_TLS_PSK:=yes
    
    # Comment out to disable client client threading support.
    #WITH_THREADING:=yes
    
    # 是否使用严格的协议版本(老版本兼容会有点问题)
    #WITH_STRICT_PROTOCOL:=yes
    
    # 是否开启桥接模式
    #WITH_BRIDGE:=yes
    
    # 是否开启持久化功能
    #WITH_PERSISTENCE:=yes
    
    # 是否监控运行状态
    #WITH_MEMORY_TRACKING:=yes

    这里需要注意的是,默认情况下Mosquitto的安装需要OpenSSL的支持;如果不需要SSL,则需要关闭config.mk里面的某些与SSL功能有关的选项(WITH_TLS、WITH_TLS_PSK)。接着,就是运行make install进行安装,完成之后会在系统命令行里发现mosquitto、mosquitto_passwd、mosquitto_pub和mosquitto_sub四个工具(截图如下),分别用于启动代理、管理密码、发布消息和订阅消息。



    2、配置&运行

    安装完成之后,所有配置文件会被放置于/etc/mosquitto/目录下,其中最重要的就是Mosquitto的配置文件,即mosquitto.conf,以下是详细的配置参数说明。

    # =================================================================
    # General configuration
    # =================================================================
    
    # 客户端心跳的间隔时间
    #retry_interval 20
    
    # 系统状态的刷新时间
    #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
    
    # =================================================================
    # Default listener
    # =================================================================
    
    # 服务绑定的IP地址
    #bind_address
    
    # 服务绑定的端口号
    #port 1883
    
    # 允许的最大连接数,-1表示没有限制
    #max_connections -1
    
    # cafile:CA证书文件
    # capath:CA证书目录
    # certfile:PEM证书文件
    # keyfile:PEM密钥文件
    #cafile
    #capath
    #certfile
    #keyfile
    
    # 必须提供证书以保证数据安全性
    #require_certificate false
    
    # 若require_certificate值为true,use_identity_as_username也必须为true
    #use_identity_as_username false
    
    # 启用PSK(Pre-shared-key)支持
    #psk_hint
    
    # SSL/TSL加密算法,可以使用“openssl ciphers”命令获取
    # as the output of that command.
    #ciphers
    
    # =================================================================
    # Persistence
    # =================================================================
    
    # 消息自动保存的间隔时间
    #autosave_interval 1800
    
    # 消息自动保存功能的开关
    #autosave_on_changes false
    
    # 持久化功能的开关
    persistence true
    
    # 持久化DB文件
    #persistence_file mosquitto.db
    
    # 持久化DB文件目录
    #persistence_location /var/lib/mosquitto/
    
    # =================================================================
    # Logging
    # =================================================================
    
    # 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
    
    # =================================================================
    # Security
    # =================================================================
    
    # 客户端ID的前缀限制,可用于保证安全性
    #clientid_prefixes
    
    # 允许匿名用户
    #allow_anonymous true
    
    # 用户/密码文件,默认格式:username:password
    #password_file
    
    # PSK格式密码文件,默认格式:identity:key
    #psk_file
    
    # pattern write sensor/%u/data
    # ACL权限配置,常用语法如下:
    # 用户限制:user <username>
    # 话题限制:topic [read|write] <topic>
    # 正则限制:pattern write sensor/%u/data
    #acl_file
    
    # =================================================================
    # Bridges
    # =================================================================
    
    # 允许服务之间使用“桥接”模式(可用于分布式部署)
    #connection <name>
    #address <host>[:<port>]
    #topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]
    
    # 设置桥接的客户端ID
    #clientid
    
    # 桥接断开时,是否清除远程服务器中的消息
    #cleansession false
    
    # 是否发布桥接的状态信息
    #notifications true
    
    # 设置桥接模式下,消息将会发布到的话题地址
    # $SYS/broker/connection/<clientid>/state
    #notification_topic
    
    # 设置桥接的keepalive数值
    #keepalive_interval 60
    
    # 桥接模式,目前有三种:automatic、lazy、once
    #start_type automatic
    
    # 桥接模式automatic的超时时间
    #restart_timeout 30
    
    # 桥接模式lazy的超时时间
    #idle_timeout 60
    
    # 桥接客户端的用户名
    #username
    
    # 桥接客户端的密码
    #password
    
    # bridge_cafile:桥接客户端的CA证书文件
    # bridge_capath:桥接客户端的CA证书目录
    # bridge_certfile:桥接客户端的PEM证书文件
    # bridge_keyfile:桥接客户端的PEM密钥文件
    #bridge_cafile
    #bridge_capath
    #bridge_certfile
    #bridge_keyfile
    
    # 自己的配置可以放到以下目录中
    include_dir /etc/mosquitto/conf.d

    最后,启动Mosquitto服务很简单,直接运行命令行“ mosquitto -c /etc/mosquitto/mosquitto.conf -d ”即可开启服务。接下来,就让我们尽情体验Mosquitto的强大功能吧!当然,有了Mosquitto,我们就可以安心地抛弃“简陋”的rsmb了,有兴趣的话,大家还可以尝试把Mosquitto服务运用到上一篇的Android推送服务中。

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    正文部分转自http://topmanopensource.iteye.com/blog/1703814     

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    偷来的东西 …

  • 相关阅读:
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    flowable 获取当前任务流程图片的输入流
    最新 接口api插件 Swagger3 更新配置详解
    springboot 集成 activiti 流程引擎
    java 在线考试系统源码 springboot 在线教育 视频直播功能 支持手机端
    阿里 Nacos 注册中心 配置启动说明
    springboot 集成外部tomcat war包部署方式
    java 监听 redis 过期事件
    springcloudalibaba 组件版本关系
    java WebSocket 即时通讯配置使用说明
  • 原文地址:https://www.cnblogs.com/gyrgyr/p/6876949.html
Copyright © 2011-2022 走看看