美文网首页MQTT
Mosquitto 客户端使用介绍

Mosquitto 客户端使用介绍

作者: EMQ | 来源:发表于2018-07-22 22:53 被阅读62次

    简介

    ​ Mosquitto是用C语言实现了MQTT(Message Queueing Telemetry
    Transport)协议的Broker,EMQ君在本文对MQTT协议不做过多的赘述,关于 MQTT 协议的介绍读者可以阅读EMQ的MQTT协议介绍。 本文重点介绍mosquito客户端的使用。

    安装

    Mosquitto安装,可以参考EMQ君之前写的Ubuntu上搭建Mosquitto MQTT服务器

    参数介绍

    安装成功后,在终端运行mosquitto_sub --help 或 mosquitto_pub —help获取脚本参数说明:

    mosquitto_pub参数说明:

    -d  打印debug信息
    -f  将指定文件的内容作为发送消息的内容
    -h  指定要连接的域名  默认为localhost
    -i  指定客户端clientid,默认为附加进程ID的mosquitto_pub_
    -I  指定clientId前缀
    -m  消息内容
    -n  发送一个空(null)消息
    -p  连接端口号
    -q  指定QoS的值(0,1,2)
    -t  指定topic
    -u  用户名
    -P  用户密码    
    -V  指定MQTT协议版本
    --will-payload  指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
    --will-qos  Will的QoS值。该参数需要与--will-topic一起使用
    --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使 用
    --will-topic  用户发送Will消息的topic
    

    mosquitto_sub参数说明

    -c  指定客户端clean_session是否保存。
    -d  打印debug信息
    -h  指定要连接的域名  默认为localhost
    -i   指定客户端clientid
    -I   指定clientId前缀
    -k  keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒.
    -q 指定希望接收到QoS为什么的消息  默认QoS为0
    -R 不显示陈旧的消息
    -t 订阅topic
    -v 打印消息
    --will-payload  指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
    --will-qos  Will的QoS值。该参数需要与--will-topic一起使用
    --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使>用
    --will-topic  用户发送Will消息的topic
    

    使用

    介绍Mosquitto客户端的使用,少不了要和MQTT Broker结合进行发布订阅,本文中MQTT Broker使用的是EMQ,EMQ的安装,可参考EMQ君之前文章介绍的Ubuntu上搭建EMQ MQTT服务器。EMQ君在本文中介绍两种常见的连接使用MQTT、MQTT over SSL。

    MQTT

    mosquitto简单的MQTT订阅发布:

    订阅

    mosquitto_sub -t mqtt -u test -P t123456

    发布

    mosquitto_pub -h localhost -t mqtt -m "hello world" -u test -P t123456

    在订阅客户端可收到消息hello world

    MQTT over SSL

    EMQ MQTT服务器内置一套关于服务端、客户端证书,在测试过程中,可直接使用:

    EMQ MQTT配置,编辑etc/emq.conf:

    ## SSL Listener: 8883, 127.0.0.1:8883, ::1:8883
    mqtt.listener.ssl = 8883
    ## Size of acceptor pool
    mqtt.listener.ssl.acceptors = 4
    ## Maximum number of concurrent clients
    mqtt.listener.ssl.max_clients = 512
    ## Rate Limit. Format is 'burst,rate', Unit is KB/Sec
    ## mqtt.listener.ssl.rate_limit = 100,10
    ## Configuring SSL Options
    ## See http://erlang.org/doc/man/ssl.html
    mqtt.listener.ssl.handshake_timeout = 20
    mqtt.listener.ssl.keyfile = etc/certs/key.pem
    mqtt.listener.ssl.certfile = etc/certs/cert.pem
    mqtt.listener.ssl.cacertfile = etc/certs/cacert.pem
    mqtt.listener.ssl.verify = verify_peer
    mqtt.listener.ssl.fail_if_no_peer_cert = true
    

    mosquitto_sub、mosquitto_pub进行验证,本示例脚本证书路径使用相对路径,脚本可在emq安装路径执行,或者替换成绝对路径:

    订阅

    mosquitto_sub -t topic -p 8883 --cafile etc/certs/cacert.pem --cert
    etc/certs/client-cert.pem --key etc/certs/client-key.pem  --insecure
    

    发布

    mosquitto_pub -t topic -m haha --cafile etc/certs/cacert.pem --cert
    etc/certs/client-cert.pem --key etc/certs/client-key.pem  --insecure -p 8883
    

    从Subscribe终端可查看发出的“haha”消息。

    总结

    本文简单的介绍了关于Mosquitto客户端的使用。Mosquitto客户端在开发、测试过程中能模拟设备、应用程序,是一款较方便、好用的终端脚本工具,EMQ君在接下来篇幅文章中会介绍更多MQTT客户端的工具。另,Mosquitto客户端更多说明,请参考官网:

    mosquitto_sub

    mosquitto_pub

    相关文章

      网友评论

        本文标题:Mosquitto 客户端使用介绍

        本文链接:https://www.haomeiwen.com/subject/spgrmftx.html