@Bean
public Mono mqttClient() {
return Mono.fromCallable(() -> {
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 mqttClient;
}).subscribeOn(Schedulers.boundedElastic());
}
在需要使用 MqttClient 对象的地方,可以使用 flatMap() 方法将 Mono 转换为 Mono, 然后使用 subscribe() 方法来获取 MqttClient 对象。示例代码如下:
@Autowired
private Mono mqttClientMono;
public void doSomething() {
mqttClientMono.flatMap(mqttClient -> {
// 在这里使用 MqttClient 对象
return Mono.just(mqttClient);
}).subscribe();
}
在上面的示例代码中,首先注入了一个 Mono 对象,然后在 doSomething() 方法中,使用 flatMap() 方法将 Mono 转换为 Mono, 然后在 flatMap() 方法中使用 MqttClient 对象进行具体的操作。最后使用 subscribe() 方法来订阅 Mono。