1、MQTT介绍
MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,设计用于连接低带宽、高延迟或不可靠网络的设备。
MQTT 是基于发布/订阅模式(Publish/Subscribe)的协议,其中设备可以发布消息到一个主题(Topic),其他设备可以订阅这个主题以接收相关消息。这种模式使得设备之间可以进行灵活的通信,而不需要直接连接到彼此。
常见的支持支持MQTT的中间件有RabbitMQ和ActiveMQ。
2、今天我们基于RabbitMQ来进行学习下MQTT 生产者,如下图所示:
![](https://file.jishuzhan.net/article/1782958247238438914/bfb34f3f642c3f003234bb683b61e435.webp)
3、通过步骤【生成记录】生成10条记录,记录中有一个message字段,类型为String字符串,message的值为我是java小金刚,如下图所示:
![](https://file.jishuzhan.net/article/1782958247238438914/87b39d21c10d76b127ef06a0b0433e71.webp)
4、通过步骤【MQTT producer】将message值推送到RabbitMQ中供其他应用消费。
![](https://file.jishuzhan.net/article/1782958247238438914/c5e19bc4214c2dca3f3caa59c814e712.webp)
**Step name:**自定义步骤名称
**Connection:**指定此步骤将连接的 MQTT 服务器的地址,如127.0.0.1:1883(注意这里的端口是1883,不是5672)
**Client ID:**指定 MQTT 客户端的唯一 ID。MQTT 服务器使用此客户端 ID 来识别每个不同的客户端及其当前状态。
**Specify topic:**选择"指定topic"以输入特定的主题名称,静态指定。
**Get data from field:**动态指定topic。
**Topic name:**在主题名称字段中,输入您希望发布流数据(消息)的 MQTT 主题的名称。每个 MQTT 生产者步骤将启动一个单独的线程进行发布。
Quality of Service :是消息传递的保证级别。选择以下选项之一。
至多一次(0),这是默认值
至少一次(1)
恰好一次(2)
**Message field:**设置消息字段,来源于前置步骤,下拉选择需要的字段。
![](https://file.jishuzhan.net/article/1782958247238438914/96f944b61335a2d24ae38e528b6c137c.webp)
**Username:**MQTT服务器的用户名,如admin
Password:MQTT服务器的秘密。
**Use secure protocol:**选择此选项以定义连接的 SSL 属性,本次不做介绍。
![](https://file.jishuzhan.net/article/1782958247238438914/a1000195c7e16e21f3e228843466e883.webp)
**Keep Alive Interval:**指定在 PDI 客户端完成传输一个控制数据包和开始传输下一个数据包之间允许经过的最大间隔秒数。
Max Inflight:指定在任何给定时间点处理中的最大消息数量。
Connection Timeout:指定在未收到消息时断开连接的时间,以秒为单位。
Clean Session:指定broker是否会存储或清除会话的消息。请选择以下之一。
True
当设置为 True 时,经纪人不会存储客户端的任何信息。所有来自先前持久会话的信息都将被清除。
False
当设置为 False 时,经纪人将存储客户端的所有订阅。当 QoS(服务质量)参数设置为 1 或 2 时,所有未接收的消息将被存储。
Storage Level:消息是存储在内存中还是在磁盘上的。
默认(留空)是内存。
对于磁盘,请输入有效路径。
Server URIs:指定 MQTT 服务器的统一资源标识符(URI),如mqtt://example.com:1883
MQTT Version:请指定此步骤连接到的 MQTT 协议版本,如MQTT 3.1.1
Automatic Reconnect:客户端在与服务器断开连接时尝试自动重新连接。请选择 True 或 False:
True
是,尝试重新连接到服务器。
False
否,不尝试重新连接到服务器。
5、RabbitMQ MQTT协议配置,
1)需要先安装然RabbitMQ。
2)启用MQTT插件,通过命令rabbitmq-plugins enable rabbitmq_mqtt进行启动。
3)开启成功后,查看管理控制台,我们可以发现MQTT服务运行在1883
端口上了。
![](https://file.jishuzhan.net/article/1782958247238438914/515297d6c4a6b43066ce58fe18d24695.webp)
6、spoon中运行转换文件,此时发现RabbitMQ中已经成功写入数据,如下图所示:
![](https://file.jishuzhan.net/article/1782958247238438914/92b2bf15ccdd820bf2e47ab985648b74.webp)
![](https://file.jishuzhan.net/article/1782958247238438914/c0ba5a1fd6fed987995478b580870b35.webp)