Ich versuche, IP-Blacklist-Szenarien in einem Reactor Netty HttpClient zu bewältigen. Ich habe die Blacklist-Prüfung mit doAfterResolve implementiert, wie unten gezeigt:
Code: Select all
var httpClient = reactor.netty.http.client.HttpClient.create()
// ...
httpClient = httpClient.doAfterResolve((conn, addr) -> {
InetAddress address = ((InetSocketAddress) addr).getAddress();
if (isBlocked(address))
throw new IllegalStateException("IP is blocked");
});
Wenn die Ausnahme jedoch ausgelöst wird, wird sie nicht an den doOnError-Handler in meiner Anforderungskette weitergegeben:
Code: Select all
httpRequest
.retrieve()
// ...
.doOnError(e -> {
// Expect error handling here
})
.toFuture();
Ich hatte erwartet, dass die in doAfterResolve ausgelöste Ausnahme im doOnError-Handler abgefangen wird, aber es scheint, dass dies nicht der Fall ist. Wie kann ich diesen Fehler in der Anforderungskette richtig behandeln?