开发者社区 > 云原生 > 消息队列 > 正文

有个MQTT问题请教一下, 消费者有多个pod, 这几个pod是否都会收到同一条消息?

问题1:有个MQTT问题请教一下, 消费者有多个pod, 这几个pod是否都会收到同一条消息?
问题2:是云端sdk消费者, 订阅同一个topic,只是有多个pod,
多个云端消费的话,只会有一个收到, 这是sdk内部实现的嘛

展开
收起
cuicuicuic 2023-07-13 14:53:55 535 0
2 条回答
写回答
取消 提交回答
  • 问题1:如果您的 MQTT 消费者是通过多个 Pod 运行的,并且它们都订阅了同一个主题(topic),那么每个 Pod 都有可能接收到相同的消息。这是由 MQTT 协议的订阅机制决定的。

    MQTT 的发布-订阅模型中,一个发布者可以将消息发送到一个或多个主题,而订阅者可以选择订阅感兴趣的主题。当有新的消息发布到订阅者订阅的主题时,所有订阅该主题的客户端(包括多个 Pod)都有机会接收到该消息。

    因此,如果多个 Pod 订阅了相同的主题并且消息发布到该主题时,每个 Pod 都有可能独立地接收到相同的消息。这意味着这些 Pod 可能会同时处理相同的消息。

    问题2:对于云端 SDK 消费者订阅同一个主题并运行在不同的 Pod 上,根据 MQTT 协议的规定,每个 SDK 消费者都有可能接收到相同的消息。然而,具体是哪个 Pod 接收到消息取决于 MQTT 服务器的负载均衡算法或调度机制。

    MQTT 服务器通常使用一种负载均衡策略来分配客户端的订阅关系和处理消息。这种策略可以确保消息在订阅者之间均匀地分发,以实现负载均衡和高可用性。

    2023-07-28 14:49:27
    赞同 展开评论 打赏
  • 回答1:如果是客户端,看是否订阅同一个topic,如果是,就会收到同一个消息

    如果是云端sdk的话,多个云端消费的话,只会有一个收到
    回答2:是的,防止重复消费。云端sdk里面,你可以看下内部实现,就是用到RabbitMQ,此回答整理自钉群“阿里云 微消息队列 MQTT产品咨询群”

    2023-07-13 17:11:04
    赞同 展开评论 打赏

多个子产品线联合打造金融级高可用消息服务以及对物联网的原生支持,覆盖多行业。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载