以下のように、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
通話をキャンセルする正しい方法は何ですか?