所以从SQS的文档来看,如果在消息中加入组-ids,消费者可以水平缩放。我假设这些组-id是动态的。
如果一个消费者最初处理的是组-id的消息。A
和 B
如果有大量的 A 流入,如果目前没有 B 类型的消息在飞行中,B 组的消息是否会被自动路由到另一个消费者? 消费者客户端的路由是如何确定的,是动态的,还是固定的哈希值? 例如:如果有新的组号加入,是否能保证负载均匀地分布在消费者身上?
是否有办法获得队列大小的分组计数?
在Amazon SQS中没有 "消费者客户端路由"。
相反,消费者负责向SQS队列询问消息。
它是 你的 责任,对客户进行适当的规模和平衡。
从 避免大量积压具有相同消息组 ID 的消息 - 亚马逊简单队列服务:
对于 FIFO 队列,最多可以有 20,000 条飞信(消费者从队列中收到,但尚未从队列中删除)。如果你达到这个配额,Amazon SQS不会返回任何错误信息。如果您的队列有大量积压的 20,000 条或更多消息 具有相同信息组ID的FIFO队列可能无法返回具有不同消息组ID但在稍后时间被发送到队列中的消息,直到你成功地消耗了积压的消息。
只有当消息当前正在被 "处理 "时,才会出现这种问题。