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)
< /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>