@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()); }

使用Mono.fromCallable()将Callable对象包装成Mono,然后指定调度器Schedulers.boundedElastic(),使其在限制的线程池中执行。这样可以避免线程阻塞问题。

@Bean注解下使用Mono创建MqttClient并避免线程阻塞

原文地址: https://www.cveoy.top/t/topic/n9RG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录