springboot整合mqtt客户端订阅接收信息
应用场景:从通讯管理集中订阅终端设备数据信息
1、引入jar包
<!-- mqtt -->
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-mqtt</artifactId>
</dependency>
2、properties中配置mqtt的基本连接信息
#mqtt配置 - start
#用户名
spring.mqtt.username = anTest
#密码
spring.mqtt.password = an123456
#服务器连接地址
spring.mqtt.url = tcp://locahost:61613
#默认的消息推送主题 topIc
spring.mqtt.default.topic = test/#
#连接超时
spring.mqtt.completionTimeout=3000
#mqtt配置 - end
3、编写mqtt消息接收处理类MQTTSubsribe
@Component
public class MQTTSubsribe {
@Value("${spring.mqtt.password}")
private String password;
@Value("${spring.mqtt.username}")
private String username;
@Value("${spring.mqtt.url}")
private String url;
//配置中的topic
@Value("${spring.mqtt.default.topic}")
private String defaultTopic;
// 连接超时时间
@Value("${spring.mqtt.completionTimeout}")
private int completionTimeout ;
private String[] topics;
private MqttClient client;
private MqttConnectOptions mqttConnectOptions;
@Autowired
private PushCallback pushCallback;
private ScheduledExecutorService scheduled;
public void startReconnect(){
this.scheduled = Executors.newSingleThreadScheduledExecutor();
// 定时任务——重新连接mqtt服务器
this.scheduled.scheduleAtFixedRate(new Runnable() {
public void run() {
if (!MQTTSubsribe.this.client.isConnected()) <