我正在使用 WebClient 创建调用以将状态更新发送到端点,如下所示:
public Disposable updateStatus(Status status) {
return WebClient.create("http://server:7777")
.post()
.body(status, Status.class)
.exchange()
.retryBackoff(2, Duration.ofSeconds(30))
.subscribe();
}
我正在调用的端点不是 100% 可用的(可能因为网络问题而无法到达它)。这就是我使用retryBackoff
.
在下面的场景中
时间 0 发送状态 1 由于网络问题,它抛出异常并安排在 30 秒内尝试(时间 0 + 30) 2 另一个状态可用,需要发送。但是,第一个需要取消。
我的问题是如何在时间 1 取消呼叫并在时间 2 发送呼叫。在时间 1,它会因为 retryBackoff 重新尝试重新发送。
我应该保留返回的 Disposable 的引用并在再次调用dispose
之前调用它updateStatus
吗?取消电话的正确方法是什么?