需要一些关于如何使用RabbitMQ实现消费者负载 balancer 的技巧 .

场景如下 - 我有2个应用程序,假设App1和App2(实际上是单个应用程序的2个阶段),在不同的主机上运行(可能在同一个AZ中,也可能不在同一个AZ中),而RabbitMQ用于移交一半 - 从App1到App2的任务 .

App1和App2有多个实例 . 给定流量,App1是TCP负载 balancer 的 . 我更喜欢App2是TCP负载 balancer 的 - 所以在需要时会提出新的App2实例等 . 等等 .

现在,根据我对RabbitMQ的理解,负载均衡器显然不能用作消费者 . 所以我认为设置可能如下 -

传入请求 - > LB - > App1 * N1 - > RabbitMQ - > Worker - > LB - > App2 * N2

(' Worker '只会通过LB将任务移交给App2实例)

PS - 我将使用芹菜 . AutoScale选项是可能的,但我不想编写自己的动态缩放算法 .