Код: Выделить всё
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>
Теперь, к сожалению, я не уверен, понимаю ли я, что делает мой обработчик неудачи, или как я могу настроить его, чтобы сделать то, что я хочу. < /p>
Но я надеялся получить некоторую помощь отсюда.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>
, который, если я правильно понял, просто сбросил бы элементы, если мои подписчики не могут справиться с скоростью, в которой элементы испускают в раковину.
, так что это может быть решением, но, похоже, это не позволяет мне также иметь дочерность обратного давления. Приятно иметь (буферизируйте некоторые элементы вместо того, чтобы сразу же падать), но также избежать ошибки переполнения и вместо того, чтобы отбросить? Или разными средствами?
спасибо! < /P>
Подробнее здесь: https://stackoverflow.com/questions/796 ... wexception