yml中的配置
mqtt:
enabled: false
username: admin
password: 123456
url: tcp://1.1.1.1:8080 # 服务器地址
client:
id: MrOnion # Mqtt显示此客户端的名称
sub:
topic: /sys/+/up
down:
topic: /+/down
completionTimeout: 3000
MqttConfig中的配置
@Configuration
@Slf4j
public class MqttConfig {
@Value("${mqtt.username}")
private String username;
@Value("${mqtt.password}")
private String password;
@Value("${mqtt.url}")
private String hostUrl;
@Value("${mqtt.client.id}")
private String clientId;
@Value("${mqtt.sub.topic}")
private String subTopic;
@Resource
private MqttService mqttService;
@Bean//将此类放进ioc容器
public MqttClient mqttClient() throws MqttException {//创建构造器
MqttConnectOptions options = new MqttConnectOptions();//连接mqtt
//配置 MQTT 连接选项
options.setUserName(username);//连接名
options.setPassword(password.toCharArray());//连接密码,将密码转成字符数组
MqttClient mqttClient = new MqttClient(hostUrl, clientId);//地址+端口,客户端id
mqttClient.connect(options);//开始操作
//spring boot 作为mqtt的客户端:收到消息时调用
mqttClient.subscribe(subTopic, (topic, message) -> {
String payload = new String(message.getPayload());
log.info("收到来自主题 " + topic + " 的消息:" + payload);
new Thread(() -> mqttService.saveVariable(payload)).start(); // 编写自己需要处理的逻辑
});
return mqttClient;
}
}