多个MQTT客户端订阅了相同的主题

凯文

我实际上有一个带有MQTT客户端的spring boot应用程序,该应用程序已订阅该主题。

当我放置应用程序的2个实例(2个容器/容器)时遇到问题,因为它创建了到发布者的2个连接!问题是我将每条消息的内容记录在数据库中,因此我收到了2次数据!一个来自吊舱,另一个来自第二个。..因此数据库中有2条记录...

这是我的实际代码:

.
..
...
....
    @Bean
    public MqttConnectOptions getReceiverMqttConnectOptions() {
        MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
        mqttConnectOptions.setCleanSession(true);
        mqttConnectOptions.setConnectionTimeout(30);
        mqttConnectOptions.setKeepAliveInterval(60);
        mqttConnectOptions.setAutomaticReconnect(true);

        mqttConnectOptions.setUserName(bean.getProperty("username"));
        String password = bean.getProperty("password");
        String hostUrl = bean.getProperty("url");

        mqttConnectOptions.setPassword(password.toCharArray());
        mqttConnectOptions.setServerURIs(new String[] { hostUrl });
        return mqttConnectOptions;
    }

    @Bean
    public MqttPahoClientFactory mqttClientFactory() {
        DefaultMqttPahoClientFactory factory = new DefaultMqttPahoClientFactory();
        factory.setConnectionOptions(getReceiverMqttConnectOptions());
        return factory;
    }

    @Bean
    public MessageChannel mqttInputChannel() {
        return new DirectChannel();
    }

    @Bean
    public MessageProducer inbound() {
        String clientId = "client-id" + UUID.randomUUID().toString();
        MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(clientId, mqttClientFactory(), "jenkins");
        adapter.setCompletionTimeout(20000);
        adapter.setConverter(new DefaultPahoMessageConverter());
...
..
.

如果您有任何解决方案,可以在不创建2个MQTT连接的情况下使用我的应用程序的2个容器。

哈迪尔布

您需要使用支持共享订阅的代理(此功能已添加到MQTTv5标准中,但是某些代理在v3中不支持任何标准版本)

共享订阅允许一组客户订阅一个主题(或通配符主题),发布到该主题的任何给定消息将仅传递给一组客户。

您可以在此处阅读有关共享订阅的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向 MQTT 中订阅相同主题的一些客户端发送消息

来自分类Dev

两个paho.mqtt客户端订阅相同的客户端区域

来自分类Dev

Spring Integration MQTT cleanSession = false失败,因为客户端取消订阅主题

来自分类Dev

HiveMQ MQTT客户端Java:是否可以检查主题是否与订阅匹配?

来自分类Dev

客户端如何知道它是否已经订阅了 MQTT 主题?

来自分类Dev

mqtt 客户端订阅多个订阅。最好的方法是什么?

来自分类Dev

为主题创建多个客户端

来自分类Dev

MQTT知道客户端是否已订阅

来自分类Dev

直接从 Angular 客户端订阅 Azure 事件网格主题

来自分类Dev

SI 订阅多个 mqtt 主题

来自分类Dev

python Paho客户端MQTT:写入多个文件

来自分类Dev

MQTT C ++客户端

来自分类Dev

MQTT 代理与 MQTT 客户端的通信

来自分类Dev

如何为MQTT代理建模以使客户端能够单独订阅其消息?

来自分类Dev

Python paho mqtt 客户端不会同时发布和订阅

来自分类Dev

使用 pika(python 客户端)通过 RabbitMQ 发布/订阅 MQTT 消息

来自分类Dev

iOS AWS SNS:客户端如何确认SNS主题订阅?

来自分类Dev

PUSH-000064无法取消订阅客户端-无效的主题名称或选择器

来自分类Dev

ROS服务提供商需要订阅客户端主题

来自分类Dev

如何根据条件订阅特定主题,在Spring中限制单足客户端的数量?

来自分类Dev

MQTT如何从客户端创建客户端?

来自分类Dev

Spring集成MQTT发布并订阅多个主题

来自分类Dev

Spring集成MQTT发布并订阅多个主题

来自分类Dev

Mqtt订阅了Contiki中的多个主题

来自分类Dev

流星客户端仅发布订阅

来自分类Dev

Paho(MQTT)客户端无法连接

来自分类Dev

HTML页面中的mqtt客户端

来自分类Dev

负载均衡MQTT客户端

来自分类Dev

Paho(MQTT)客户端无法连接

Related 相关文章

  1. 1

    向 MQTT 中订阅相同主题的一些客户端发送消息

  2. 2

    两个paho.mqtt客户端订阅相同的客户端区域

  3. 3

    Spring Integration MQTT cleanSession = false失败,因为客户端取消订阅主题

  4. 4

    HiveMQ MQTT客户端Java:是否可以检查主题是否与订阅匹配?

  5. 5

    客户端如何知道它是否已经订阅了 MQTT 主题?

  6. 6

    mqtt 客户端订阅多个订阅。最好的方法是什么?

  7. 7

    为主题创建多个客户端

  8. 8

    MQTT知道客户端是否已订阅

  9. 9

    直接从 Angular 客户端订阅 Azure 事件网格主题

  10. 10

    SI 订阅多个 mqtt 主题

  11. 11

    python Paho客户端MQTT:写入多个文件

  12. 12

    MQTT C ++客户端

  13. 13

    MQTT 代理与 MQTT 客户端的通信

  14. 14

    如何为MQTT代理建模以使客户端能够单独订阅其消息?

  15. 15

    Python paho mqtt 客户端不会同时发布和订阅

  16. 16

    使用 pika(python 客户端)通过 RabbitMQ 发布/订阅 MQTT 消息

  17. 17

    iOS AWS SNS:客户端如何确认SNS主题订阅?

  18. 18

    PUSH-000064无法取消订阅客户端-无效的主题名称或选择器

  19. 19

    ROS服务提供商需要订阅客户端主题

  20. 20

    如何根据条件订阅特定主题,在Spring中限制单足客户端的数量?

  21. 21

    MQTT如何从客户端创建客户端?

  22. 22

    Spring集成MQTT发布并订阅多个主题

  23. 23

    Spring集成MQTT发布并订阅多个主题

  24. 24

    Mqtt订阅了Contiki中的多个主题

  25. 25

    流星客户端仅发布订阅

  26. 26

    Paho(MQTT)客户端无法连接

  27. 27

    HTML页面中的mqtt客户端

  28. 28

    负载均衡MQTT客户端

  29. 29

    Paho(MQTT)客户端无法连接

热门标签

归档