シナリオ 1 : MQTT ブローカーを開始せずに SpringBoot アプリケーションを開始すると、MqttClient は MQTT ブローカーの開始時に再接続を試行しません。
シナリオ 2 : ただし、SpringBoot アプリケーションを開始する前に MQTT ブローカーが開始され、後で 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;