0

我想在 Spring Integration 中使用异步 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"/>

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

4

2 回答 2

1

I'm pretty sure that the DefaultMqttPahoClientFactory() provided by Spring Integration is using the "synchronous" mode of operation in Paho, so the likelihood is that you would need an alternative ClientFactory implementation.

于 2014-06-10T15:29:11.560 回答
1

正确的; 目前,仅支持同步客户端。

随意在这里打开一个改进的 JIRA 问题,当然欢迎贡献 - 指南在这里

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

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

于 2014-06-11T12:34:56.600 回答