首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spring引导中添加具有不同客户端id的MQTT连接

在spring引导中添加具有不同客户端id的MQTT连接
EN

Stack Overflow用户
提问于 2022-07-18 20:01:46
回答 1查看 212关注 0票数 2

我的程序通过MQTT为多个设备获取实时数据。我使用的是spring-integration-mqtt版本5.5.13。MQTT代理对每个设备使用不同的客户端ids。使用静态和预定义的客户端id,一切都很好。当我尝试添加类MqttPahoMessageDrivenChannelAdapter的新适配器时,问题就出现了。问题是我做不到。

我为MqttPahoClientFactoryMessageChannel定义了一个bean。我还为MessageHandler类提供了一个bean,它使用以下内容进行注释:

代码语言:javascript
复制
@ServiceActivator(inputChannel = "mqttChannel") // mqttChannel is the adapter output channel

当我需要有自己的客户端id的新连接时,我调用下面的方法。

代码语言:javascript
复制
public MessageProducer inbound() {
        MqttPahoMessageDrivenChannelAdapter adapter =
                new MqttPahoMessageDrivenChannelAdapter("tcp://localhost:1883", "testClient",
                                                 "topic1", "topic2");
        adapter.setCompletionTimeout(5000);
        adapter.setConverter(new DefaultPahoMessageConverter());
        adapter.setQos(1);
        adapter.setOutputChannel(mqttInputChannel());
        return adapter;
    }

我猜它不是作为一个倾听者提交的,因为它不是一个bean。我不知道是否可以在运行时添加一种类型的多个bean。

我没有运气用不同的限定符定义两个MessageProducer类型的bean。其中只有一个起作用了。

也许简单地调用入站方法就不会连接和订阅?还是没有调用输出通道?

我是MQTT的新手,这是我第一次尝试这个。这也是我的第一个问题,所以我希望这是一个好问题:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-20 04:50:08

因此,我最终使用了Eclipse客户端Mqttv3。它已经两年没有更新了,但是它让我能够更直接地管理我的mqtt连接,并完成工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73027970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档