[英]Performance of WebFlux with retry exponential backoff
我正在构建一个将事件发送到客户端 URL 的 webhook 服务。 如果失败或超时,我需要使用指数退避重试发送。 我有两种实现逻辑的方法:
WebClient.create()
.post()
.uri(URL)
.exchange()
...
.retryWhen(Retry.backoff(4, Duration.ofSeconds(3)).jitter(0.7));
deadLetterExchange
以指数后退重新排队消息,如此处所述: https://www.baeldung.com/spring-amqp-exponential-backoff应用 WebFlux 内部重试功能很容易开发,但我对使用它有些担心,因为消息存储在应用程序 memory 中,当消息数量较多时可能会影响性能。 我想知道其他开发人员对这些选项的看法。 另外,有没有更好的选择?
在我看来,这两种方法可以一起使用。
重试策略是管理非常短暂的错误的最简单方法。 但是我们不能无限期地重试。
无限重试可能会导致 memory 问题。 但不仅如此,当您关闭服务器时。 您可能希望首先停止传入流量并期望在关闭期间没有计算/事务......
所以我们需要另一种策略来处理一些重试后失败的消息。 死信队列是一个有效的选择。
在现实生活中我们可能有几个 DQL,那么默认的一个用于意外情况。 显然,在这种情况下我们不能指望有一个好的算法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.