Reaktive Sink - Vermeiden Sie die ÜberlaufvorstellungJava

Java-Forum
Anonymous
 Reaktive Sink - Vermeiden Sie die Überlaufvorstellung

Post by Anonymous »

Ich habe diese Spüle in meiner App konfiguriert: < /p>

Code: Select all

createdSink = Sinks.many().multicast().onBackpressureBuffer(4096);

public void activityCreated(ActivityResource createdActivity) {
try {
var notification = new ActivityCreatedNotification(createdActivity);
createdSink.emitNext(notification, getFailureHandler());
} catch (Exception e) {
log.error("Emit activity created notification for activity id {} failed", createdActivity.getId(), e);
}
}

private static Sinks.EmitFailureHandler getFailureHandler() {
return Sinks.EmitFailureHandler.busyLooping(Duration.ofSeconds(5));
}
< /code>
Jetzt bin ich mir leider nicht sicher, ob ich verstehe, was mein Fehlerhandler tut oder wie ich es konfigurieren kann, um das zu tun, was ich will.2025-05-05T05:46:01.312Z ERROR [] [reactor-http-epoll-25]
[00000000-0000-4000-a000-000000000000][][][TRACE_ID:b42fa551661d9427][][c.e.d.p.a.e.ActivityExternalNotificationService.lambda$prepareExternalNotifications$3(79)]
- Error while processing activity notification
reactor.core.Exceptions$OverflowException: Backpressure overflow during Sinks.Many#emitNext
at reactor.core.Exceptions.failWithOverflow(Exceptions.java:249)
Dies ist zwar, obwohl ich die Backpression konfiguriert habe. Daher bedeutet es wahrscheinlich, dass die Backpressur -Warteschlange bereits voll war und Elemente immer wieder in die Spüle emittiert wurden, während einer der Abonnenten mit dem Rate nicht umgehen konnte, richtig? Muss diesen heißen Publisher haben, der Sink, um unendlich zu sein, er kann nicht aufhören zu arbeiten.Sinks.many().multicast().directBestEffort()
< /code>
, was, wenn ich richtig verstanden habe, nur Elemente fallen ließen, wenn meine Abonnenten nicht mit der Rate umgehen können, in der Elemente in die Spüle emittiert werden. zu haben (puffer einige Elemente, anstatt sofort fallen zu lassen), aber auch den Überlauffehler zu vermeiden und stattdessen fallen zu lassen? Oder auf andere Weise?
Danke! < /P>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post