我需要找到一种方法来限制RabbitMQ传递任务我的内部API服务器。
这是我的流程:
API客户端>内部API> RabbitMQ>芹菜(120名工人)>外部API
API客户端向内部API发送Web请求,内部API处理请求并将Task发送到RabbitMQ。任务持续时间可能需要5秒到120秒,在某些情况下,任务开始排队,并且它们以比定义的更高的速率发送到外部API,从而导致许多失败的请求。 (大约5%的失败请求)
每个请求都成为RabbitMQ任务。 RabbitMQ默认情况下尽可能快地执行任务,导致排队的任务在释放工作人员后立即以更快的速度传递。 (> 10 QPS),
问题:如何在RabbitMQ上限制任务交付?
版本:
可能的解决方案:
虽然这些解决方案可能有效,但并不能完全解决我的速率限制器的实现问题,也无法控制我的工作人员处理API请求的实际速率。