@Bean
public Flux mqttClient() {
return Flux.defer(() -> {
MqttClient mqttClient = new MqttClient(mqttPropertyConfig.getBroker(), MqttClient.generateClientId());
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
mqttConnectOptions.setAutomaticReconnect(true);
mqttConnectOptions.setUserName(mqttPropertyConfig.getUsername());
mqttConnectOptions.setPassword(mqttPropertyConfig.getPassword().toCharArray());
mqttClient.connect(mqttConnectOptions);
return Mono.just(mqttClient);
}).subscribeOn(Schedulers.boundedElastic()).cache().repeat();