1

我正在使用 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吗?取消电话的正确方法是什么?

4

0 回答 0