场景一: 当 SpringBoot 应用程序在没有启动 MQTT 代理的情况下启动时,MqttClient 永远不会在 MQTT 代理启动时尝试重新连接。
场景 2: 但是如果 MQTT 代理在启动 SpringBoot 应用程序之前启动,然后如果 MQTT 代理停止并再次启动,它会尝试重新连接并成功连接回来。
期望 即使对于场景 1,我也期待与场景 2 相同的行为
需要进行哪些更改才能使其适用于场景 1?
MqttClient bean 的片段
@Bean
@Autowired
@Conditional(MQTTConditionCheck.class)
public MqttClient connect() {
MqttClient mqttClient = null;
try {
mqttClient = new MqttClient(brokerURL, clientId, new MemoryPersistence());
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setAutomaticReconnect(true);
connOpts.setCleanSession(true);
mqttClient.connect(connOpts);
mqttClient.reconnect();
} catch (MqttException e) {
LOGGER.error("Error occurred :{}", e.getMessage());
}
return mqttClient;
}
服务等级
@Autowired(required = false)
private MqttClient mqttClient;