我的需求是负载平衡两个运行在不同vm上的mqtt节点,然后让两个节点上的消费者访问这些mqtt代理。消费者的工作将是订阅一个主题,并在收到数据后,将其发布给Kafka。问题我看到,由于两个mqtt使用者都订阅了相同的主题,它们将接收相同的消息,并且都将它插入kafka,从而创建重复的消息。有没有办法避免把复制品写进Kafka?
我尝试过mosquitto和mosca代理,但它们不支持集群。因此,如果订阅的客户端被订阅到另一个节点,则不会获得消息,而不是发布消息的节点。两个节点都在haproxy后面。
我目前正在使用emqtt代理,它支持集群,负载平衡问题由此得到解决,但它似乎不支持跨集群节点的共享订阅。
我相信,像Kafka消费群这样的功能是必需的。有什么想法吗?
1条答案
按热度按时间cigdeys31#
你试过hivemq吗?
它提供所谓的共享订阅。
如果使用共享订阅,则共享同一订阅的所有客户端将交替接收消息。