rabbitmq 根据HTTP中的Retry-after标头,使用不同的回退策略进行弹性重试状态代码429

n7taea2i  于 2022-11-23  发布在  RabbitMQ
关注(0)|答案(1)|浏览(149)

我们的情况和架构如下所示。
RabbitMQ队列-〉 Spring 启动RabbitMQ侦听器-〉服务层-〉(网络调用)。
在上面的网络调用中,依赖于从队列中发送的每个消息的URL。
现在很多时候这个网络调用失败,因为它的外部服务器与429错误代码。
记住上面有这么多不同的URL和它来自一个单一的队列。
我们使用Spring重试实施了重试,我们已经看到了改进,但由于规模和请求数量太高
我们需要在重试中做一些改进
当前重试是通过固定回退和最大尝试次数3来实现的
我正在考虑使用retry-after,这意味着在每次重试网络调用时,我需要使用不同的回退策略
这种做法是否可行和正确,或在任何层面上是否可以作出改善?
是否可以为将要执行的每次重试设置单独的回退策略
请建议是否可以通过Spring重试实现

mzmfm0qo

mzmfm0qo1#

您可以根据BackOffContext中的信息,编写一个自定义的BackOffPolicy来委托给不同的回退策略。
关键字backOffContextRetryContext中的回退上下文。
请参阅BackOffPolicy的javadoc。

相关问题