本文属于翻译,转载注明出处,欢迎关注微信小程序小白AI博客
微信公众号小白AI
或者网站 https://xiaobaiai.net
[TOC]
1 简介
Spring Integration
提供入站(inbound)和出站(outbound)通道适配器,以支持MQTT消息协议。使用这两适配器,需要加入依赖:
<!-- Maven -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
// Gradle
compile "org.springframework.integration:spring-integration-mqtt:5.2.1.RELEASE"
当前的MQTT Integration实现使用的是Eclipse Paho MQTT客户端库。两个适配器的配置都是使用DefaultMqttPahoClientFactory
实现的。有关配置选项的更多信息,请参阅Eclipse Paho MQTT
文档定义。
建议配置
MqttConnectOptions
对象并将其注入工厂(factory),而不是在工厂本身里设置(不推荐使用)MQTT连接选项。
2 Inbound(消息驱动)通道适配器
入站通道适配器由MqttPahoMessageDrivenChannelAdapter
实现。常用的配置项有:
- 客户端ID
- MQTT Broker URL
- 待订阅的主题列表
- 带订阅的主题QoS值列表
MqttMessageConverter
(可选)。默认情况下,默认的DefaultPaHomeMessageConverter
生成一条带有字符串有效负载的消息,其头部内容如下:mqtt_topic
: 接收消息的主题mqtt_duplicate
: 如果消息是重复的,则为true
mqtt_qos
: 服务质量,你可以将DefaultPahoMessageConverter
声明为payloadAsBytes
属性设置为true
,从而将DefaultPahoMessageConverter
返回有效负载中的原始byte[]
- 客户端工厂
- 发送超时。仅当通道可能阻塞(例如当前已满的有界队列通道)时才适用。
- 错误通道。下游异常将以错误消息的形式发送到此通道(如果提供)。有效负载是包含失败消息和原因的
MessagingException
。 - 恢复间隔。它控制适配器在发生故障后尝试重新连接的时间间隔。默认为10000毫秒(10秒)。
从Spring 4.1版开始,可以省略
URL
。相反,你可以在DefaultMqttPahoClientFactory
的server URIs
属性中提供服务器uri。例如,这样做允许连接到高可用(HA)集群。
从Spring 4.2.2