业务场景会遇到有 rate limit 的 api 调用, 当然可以直接交给外部的 rate limit 去处理. 但这样在与 mq 之间沟通的时候, 会浪费大量的计算资源在做重复的事情. 可以将任务分成两种进行考虑:
- one shot 类型: 正常让 mq 进行主动推送到 client, 然后进行执行处理既可以. 这里的要求是拥有一定的任务堆积能力, 以及消息处理速度的快慢. 能够方便的根据情况进行 consumer 的增加减少, 能够堆叠 1000w 以内的消息量(再多, 就应该是任务消费的问题了)
- delay 类型: 这类现在是简化的利用 mq 的 dlx 进行 retry 重试, 但因为是 push 模型, 所以无法进行主动的任务量获取的控制. 如果需要更加精确的 delay 或者 schedule 类型的任务, 则需要利用新的数据结构或者中间件来解决这个问题.
业务场景会遇到有 rate limit 的 api 调用, 当然可以直接交给外部的 rate limit 去处理. 但这样在与 mq 之间沟通的时候, 会浪费大量的计算资源在做重复的事情. 可以将任务分成两种进行考虑: