Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有类似DefaultMqttPahoClientFactory的东西用于创建异步客户端?_Java_Spring_Spring Integration_Mqtt_Paho - Fatal编程技术网

Java 是否有类似DefaultMqttPahoClientFactory的东西用于创建异步客户端?

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.

我想在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.url}"
topics="sometopic"
client-factory="clientFactory"
channel="output"/>
@Bean
公共默认值MQTTPAHOCLIENTFactory客户端工厂(){
返回新的DefaultMqttPahoClientFactory();
}

我必须自己写一本吗?我只能找到同步客户端工厂的示例。

我非常确定Spring Integration提供的DefaultMqttPahoClientFactory()使用的是Paho中的“同步”操作模式,因此您可能需要另一种ClientFactory实现。

正确;此时,仅支持同步客户端

当然,您可以随意打开一个

也就是说,我不清楚在入站适配器中使用异步客户机的好处,如您的示例所示;它是消息驱动的,到达的消息在客户端线程上异步传递。显然,出站适配器可以从异步操作中获得一些好处


这个方法非常简单,编写一个使用异步客户端的方法应该不会太难——它可能需要将传递令牌发送到某个通道——但是我们应该从
IMqttDeliveryToken
对象中抽象出来,这样我们就不会将
Paho
泄漏到上层。

。我不介意编写自己的工厂本身,但问题是:它必须符合什么接口?默认工厂返回一个MqttClient,因此如果Spring Integration MQTT入站通道适配器只接受/期望返回一个MqttClient(而不是MqttAsyncClient),我会站在闭门前吗?或者我遗漏了什么?正确-我添加了另一个答案,因为评论的长度有限。