这是我目前的架构
我有一堆物联网设备,通过原始双工持久TCP连接到我的" worker"连接到RabbitMQ队列
我的发布商发布了一些类似的消息
iot_device_name
然后,worker可以将{{1}}映射到TCP套接字。
一切都运行良好,但是如果我们想要添加HA并稍微扩展一下,那么拥有4个worker实例会更好。负载平衡TCP问题不是问题(使用HaProxy或Nginx)。
现在的问题是如何拆分队列部分的负载,因为工作人员处理的物联网设备列表是动态的(即设备可以断开连接并重新连接到其他工作人员)
所以有一种方法可以让工人说:"嗯,我不能对待这条消息,因为我不知道这个设备,给我另一个"那么其他工人可以接受并处理它吗?
可能有帮助的其他信息:
答案 0 :(得分:1)
因此,如果我正确理解您的体系结构,您可以将命令发送到您的发布者,并将其推送到rabbitmq。 在消费者方面,您有多个工作人员,分派消息,每个工作人员都有一堆设备连接到它。
如果确实这是您的架构,我会为您的rabbitmq配置提出以下建议:
我希望这里的提案有意义,还有一些其他案例需要考虑:备用交换以确保在设备未重新连接到工作人员的(短)期间我们不会丢失请求无论如何我们得到一个命令,为重新发布的消息添加一个属性,以确保我们不在系统中添加无限循环,...但是上面指出的应该是实现目标的合理起点