MQTT之客户端工具

简介: MQTT Spymqtt-spy_v0.5.3这是一个用java开发的开源MQTT客户端,可以到他们的GitHub上下载,用起来感觉得行但是如果机器上没有安装好java的话就会非常坑,经常会运行不了。

MQTT Spy

mqtt-spy_v0.5.3

这是一个用java开发的开源MQTT客户端,可以到他们的GitHub上下载,用起来感觉得行但是如果机器上没有安装好java的话就会非常坑,经常会运行不了。如果想省事的朋友就不太推荐此工具。

HiveMQ

HiveMQ是一个实时的MQTT服务的一个网站,他们既提供MQTT信息中转服务也提供一个客户端工具,http://www.mqtt-dashboard.com/ 是实时MQTT中转服务的面板,里面有MQTT服务的基本配置,如下图所示:

HiveMQ服务端

如果要使用HiveMQ的客户端工具的话,可以访问 http://www.hivemq.com/demos/websocket-client/ 。这是一个在线的MQTT客户端,它是采用WebSocket与MQTT进行通信的,所以他使用的端是8000。

HiveMQ

命令行工具 mosquitto

这是一个非常有效简单的实用工具,在macOS下可以按以下方式安装

$ brew install mosquitto

这个工具主要提供以下两个命令:

  • mosquitto_sub - 订阅消息
  • mosquitto_pub - 发布消息

订阅命令 - mosquitto_sub

命令格式

Usage: mosquitto_sub [-c] [-h host] [-k keepalive] [-p port] [-q qos] [-R] -t topic ...
                     [-C msg_count] [-T filter_out]
                     [-A bind_address] [-S]
                     [-i id] [-I id_prefix]
                     [-d] [-N] [--quiet] [-v]
                     [-u username [-P password]]
                     [--will-topic [--will-payload payload] [--will-qos qos] [--will-retain]]
                     [{--cafile file | --capath dir} [--cert file] [--key file]
                      [--ciphers ciphers] [--insecure]]
                     [--psk hex-key --psk-identity identity [--ciphers ciphers]]
                     [--proxy socks-url]
  • -c, –disable-clean-session:禁止’clean session’选项,即如果客户端断开连接,这个订阅仍然保留来接收随后到的QoS为1和2的消息,当改客户端重新连接之后,它将接收到已排在队列中的消息。建议使用此选项时,客户端id选项设为–id
  • -d, –debug:开启debug选项
  • -h, –host:说明所连接到的域名,默认是localhost
  • -i, –id:客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。
  • -I, –id-prefix:指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能喝–id同时使用。
  • -k, –keepalive:给代理发送PING命令(目的在于告知代理该客户端连接保持且在正常工作)的间隔时间,默认是60s
  • -p, –port:说明客户端连接到的端口,默认是1883
  • -P, –pw:指定密码用于代理认证,使用此选项时必须有有效的用户名。
  • -q, –qos:指定消息的服务质量,可以为0,1,2,默认是0.
  • –quiet:如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。
  • -t, –topic:指定订阅的消息主题,允许同时订阅到多个主题
  • -u, –username:指定用户名用于代理认证。
  • -v, –verbose:冗长地打印收到的消息。若指定该选项,打印消息时前面会打印主题名——“主题 消息内容”,否则,只打印消息内容
  • –will-payload:如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。
  • –will-qos:指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.
  • –will-retain:如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.
  • –will-topic:指定客户端意外断开时,Will消息发送到的主题。
$ mosquitto_sub -h broker.mqttdashboard.com -t growthai/ray/mqtt/#

键入以上命令之后终端会进入一个等待状态,所有来自growthai/ray/mqtt/#主题的信息都会打印到终端上。

在HiveMQ的客户端上发一个中文消息到growthai/ray/mqtt/

以下是终端收到信息的效果

发布命令 - mosquitto_pub

Usage: mosquitto_pub [-h host] [-k keepalive] [-p port] [-q qos] [-r] {-f file | -l | -n | -m message} -t topic
                     [-A bind_address] [-S]
                     [-i id] [-I id_prefix]
                     [-d] [--quiet]
                     [-M max_inflight]
                     [-u username [-P password]]
                     [--will-topic [--will-payload payload] [--will-qos qos] [--will-retain]]
                     [{--cafile file | --capath dir} [--cert file] [--key file]
                      [--ciphers ciphers] [--insecure]]
                     [--psk hex-key --psk-identity identity [--ciphers ciphers]]
                     [--proxy socks-url]

选项:

  • -d, –debug :开启debug选项
  • -f, –file:把一个文件的内容做为消息的内容发送。经测试,支持txt文件,不支持doc等其他形式文件。
  • -h, –host:说明所连接到的域名,默认是localhost
  • -i, –id:客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。
  • -I, –id-prefix :指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能和–id同时使用。
  • -l, –stdin-line:从总段读取输入发送消息,一行为一条消息,空白行不会被发送。
  • -m, –message:从命令行发送一条消息,-m后面跟发送的消息内容。
  • -n, –null-message:发送一条空消息。
  • -p, –port:连接的端口号,默认是1883.
  • -P, –pw:指定密码用于代理认证,使用此选项时必须有有效的用户名。
  • -q, –qos:指定消息的服务质量,可以为0,1,2,默认是0.
  • –quiet:如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。
  • -r, –retain:如果指定该选项,该条消息将被保留做为最后一条收到的消息。下一个订阅消息者将能至少收到该条消息。
  • -s, –stdin-file:从标准输入接收传输的消息内容,所有输入做为一条消息发送。
  • -t, –topic:指定消息所发布到哪个主题。
  • -u, –username:指定用户名用于代理认证。
  • –will-payload:如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。
  • –will-qos:指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.
  • –will-retain:如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.
  • –will-topic:指定客户端意外断开时,Will消息发送到的主题。

我们可以先在HiveMQ上订阅growthai/raymqtt/#这个主题,质量为Qos0,然后在终端向这个主题发送一条信息:

$ mosquitto_pub -h broker.mqttdashboard.com -t growthai/ray/mqtt/ -m 'hi i am ray'

然后我们可以看到在HiveMQ上收到的主题信息:

HiveMQ和mosquitto 命令行工具对于做IoT开来说都是非常轻量型的,而且使用也非常方便。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4月前
|
消息中间件 Java Spring
RocketMQ-JAVA客户端不同版本接入方式
RocketMQ4.0 RocketMQ5.0 JAVA接入 spring springboot
RocketMQ-JAVA客户端不同版本接入方式
|
2月前
|
传感器 网络协议 物联网
在Linux中搭建Mosquitto MQTT协议消息服务端并结合内网穿透工具实现公网访问
Mosquitto是一个开源的消息代理,它实现了MQTT协议版本3.1和3.1.1。它可以在不同的平台上运行,包括Windows、Linux、macOS等。mosquitto可以用于物联网、传感器、移动应用程序等场景,提供了一种轻量级的、可靠的、基于发布/订阅模式的消息传递机制。
|
9月前
UE DTMqtt 虚幻引擎 Mqtt 客户端插件说明
UE DTMqtt 虚幻引擎 Mqtt 客户端插件说明
329 0
|
8月前
|
安全 网络协议 物联网
不看后悔系列之一篇搞懂LinuxCentOS搭建MQTT服务器及客户端操作使用
linux CentOS上搭建MQTT服务器并不难,主要就是用到了mosquitto这款消息代理服务软件。其采用发布/订阅模式传输机制,轻量、简单、开放并易于实现,被广泛应用于物联网之中。
1376 0
|
1月前
|
Java Maven
【开源视频联动物联网平台】vertx写一个mqtt客户端
【开源视频联动物联网平台】vertx写一个mqtt客户端
32 1
|
4月前
|
消息中间件 运维 负载均衡
负载均衡中后端连了三个rabbitmq,如果挂了一个,客户端连接mq会变慢吗
在负载均衡中使用三个 RabbitMQ 实例,如果其中一个实例发生故障,可能会影响客户端连接到 RabbitMQ 的性能。具体影响取决于负载均衡的配置和客户端的实现方式。 如果负载均衡器能够及时检测到故障的 RabbitMQ 实例并将流量路由到正常的实例,那么客户端连接的性能影响可能较小。但如果负载均衡器不能迅速切换流量或者客户端实现不支持及时的连接故障转移,那么可能会导致客户端连接的延迟或失败。 在设计这样的架构时,有一些考虑因素: 1. **健康检查和故障切换:** 确保负载均衡器能够定期检查 RabbitMQ 实例的健康状态,并在出现故障时快速将流量切换到其他正常的实例。 2.
|
5月前
|
消息中间件
RabbitMQ客户端清空所有消息
RabbitMQ客户端清空所有消息
164 0
|
5月前
|
传感器 JavaScript 物联网
如何在Node.js中使用MQTT客户端库?
如何在Node.js中使用MQTT客户端库?
67 0
|
5月前
|
物联网 Python
如何通过示例在Python中使用Paho MQTT客户端?
如何通过示例在Python中使用Paho MQTT客户端?
77 2
如何通过示例在Python中使用Paho MQTT客户端?
|
5月前
|
存储 传感器 物联网
MQTT 客户端和代理连接如何工作?
MQTT 客户端和代理连接如何工作?
107 2
MQTT 客户端和代理连接如何工作?