MassTransit 与 GraphAPI 消费者和节流

问题描述 投票:0回答:0

我正在使用 MassTransit 和 RabbitMQ,其中一位消费者将向 Graph API 发出批量请求。鉴于批次可能包含受限的响应,我想知道如何正确设置重试逻辑。

GraphAPI 批处理指南指出,API 的客户端应检查批处理中每个请求的响应,并获取每个受限响应的

RETRY_AFTER
标头值,获取这些值的 MAX (
MAX_RETRY_AFTER
),并将其用作重试前的延迟。

批处理请求是从消费者的 Consume 方法中发出的。所以,直接的想法是在那里引入延迟。接下来,它可以手动处理重试或将错误返回给代理并让重试策略生效。

在前者中,感觉消费者会变成一种奇怪的长期消费者。另外,我将不得不手动考虑

MAX_RETRIES
,这样它就不会永远运行。

现在,如果依赖重试策略,取决于它的设置方式,它可能会在

MAX_RETRY_AFTER
之上添加额外的延迟(可能微不足道或不重要)。消费者仍然会“长期运行”。

我还考虑了第三种选择,但我不确定是否可行。这将设置一个“动态”重试策略,其中重试之前使用的延迟将被确定为消费逻辑的一部分。

就是说,有人可以就这些选项提供一些指导吗?最佳做法是什么?有什么需要注意的陷阱吗?

提前致谢!

microsoft-graph-api masstransit throttling batching
© www.soinside.com 2019 - 2024. All rights reserved.