【问题标题】:Is there something like DefaultMqttPahoClientFactory for creating an async client?是否有类似 DefaultMqttPahoClientFactory 的东西来创建异步客户端?
【发布时间】:2014-06-10 12:32:16
【问题描述】:

我想在 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"/>

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

【问题讨论】:

    标签: java spring spring-integration mqtt paho


    【解决方案1】:

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

    随时打开improvement JIRA issue here,当然还有contributions are always welcome - guidelines here

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 是的。我不介意编写自己的工厂本身,但问题是:它必须符合什么接口?默认工厂返回一个 MqttClient,所以如果 Spring Integration MQTT 入站通道适配器只接受/期望返回一个 MqttClient(而不是 MqttAsyncClient),我会站在闭门前吗?还是我错过了什么?
      • 正确 - 我添加了另一个答案,因为 cmets 的长度有限。
      猜你喜欢
      • 2014-02-09
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 2016-10-17
      • 2016-08-02
      • 2013-07-30
      相关资源
      最近更新 更多