初次尝试MQTT,参考了这位大哥的帖子:《spring-boot集成mqtt传输协议,以及数据持久化(很详细,附源码)》;不经思索直接copy了他的代码,然鹅,项目需要同时收发消息,即上线之后先pub一个通知告诉大家“我来了”,然后订阅一个topic静静等通知。就发现各种失败连不上,但是用客户端MQTTX就好好的。
然后另外一个大哥提点道:“看下是不是有多个连接,理论上pub和sub应该用一个connection”。
遂大彻大悟,重写了代码,成功!特附上代码,供大家参考。
package com.panda.yuan.demo.mqtt;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
/**
* <Description>
*
* @author panda.yuan
* @version 0.1
* @date 2023/07/23 <br>
*/
@Service
@Slf4j
public class IoTGateWay implements MqttCallback {
@Value("${publish.mqtt.host}")
private String host;
@Value("$