Java 是否有类似DefaultMqttPahoClientFactory的东西用于创建异步客户端?
我想在Spring集成中使用异步Paho客户端:Java 是否有类似DefaultMqttPahoClientFactory的东西用于创建异步客户端?,java,spring,spring-integration,mqtt,paho,Java,Spring,Spring Integration,Mqtt,Paho,我想在Spring集成中使用异步Paho客户端: @Bean public DefaultMqttPahoClientFactory clientFactory() { return new DefaultMqttPahoClientFactory(); } <int-mqtt:message-driven-channel-adapter id="mqttInbound" client-id="${mqtt.default.client.id}.src" url="${mqtt.
@Bean
public DefaultMqttPahoClientFactory clientFactory() {
return new DefaultMqttPahoClientFactory();
}
<int-mqtt:message-driven-channel-adapter id="mqttInbound"
client-id="${mqtt.default.client.id}.src"
url="${mqtt.url}"
topics="sometopic"
client-factory="clientFactory"
channel="output"/>
@Bean
公共默认值MQTTPAHOCLIENTFactory客户端工厂(){
返回新的DefaultMqttPahoClientFactory();
}
我必须自己写一本吗?我只能找到同步客户端工厂的示例。我非常确定Spring Integration提供的DefaultMqttPahoClientFactory()使用的是Paho中的“同步”操作模式,因此您可能需要另一种ClientFactory实现。正确;此时,仅支持同步客户端 当然,您可以随意打开一个 也就是说,我不清楚在入站适配器中使用异步客户机的好处,如您的示例所示;它是消息驱动的,到达的消息在客户端线程上异步传递。显然,出站适配器可以从异步操作中获得一些好处
这个方法非常简单,编写一个使用异步客户端的方法应该不会太难——它可能需要将传递令牌发送到某个通道——但是我们应该从
IMqttDeliveryToken
对象中抽象出来,这样我们就不会将Paho
泄漏到上层。。我不介意编写自己的工厂本身,但问题是:它必须符合什么接口?默认工厂返回一个MqttClient,因此如果Spring Integration MQTT入站通道适配器只接受/期望返回一个MqttClient(而不是MqttAsyncClient),我会站在闭门前吗?或者我遗漏了什么?正确-我添加了另一个答案,因为评论的长度有限。