MAILBOX-376 Do not lose events "forever" when publishing retries fails
Keeping them in dead-letter feels better... Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/37e662cb Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/37e662cb Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/37e662cb Branch: refs/heads/master Commit: 37e662cb41250ffc32b2e5bba1ca2c16068a908a Parents: c70c987 Author: Benoit Tellier <[email protected]> Authored: Wed Jan 23 12:03:49 2019 +0700 Committer: Benoit Tellier <[email protected]> Committed: Wed Jan 23 17:40:01 2019 +0700 ---------------------------------------------------------------------- .../org/apache/james/mailbox/events/GroupConsumerRetry.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/37e662cb/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java ---------------------------------------------------------------------- diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java index 12469b9..9171436 100644 --- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java +++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java @@ -115,8 +115,9 @@ class GroupConsumerRetry { eventAsByte)); return sender.send(retryMessage) - .doOnError(throwable -> createStructuredLogger(event).log(logger -> logger.error("Exception happens when publishing event to retry exchange," + - "this event will be lost forever", throwable))); + .doOnError(throwable -> createStructuredLogger(event) + .log(logger -> logger.error("Exception happens when publishing event to retry exchange, this event will be stored in deadLetter", throwable))) + .onErrorResume(e -> eventDeadLetters.store(group, event)); } private StructuredLogger createStructuredLogger(Event event) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
