From 844cab78ae9e20d167fd31309afa7ba76518b6b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B8=D0=BC=D0=B8=D0=BD?= Date: Fri, 15 May 2026 07:01:40 +0000 Subject: [PATCH] =?UTF-8?q?fix(notifications):=20WARN=20when=20dispatcher?= =?UTF-8?q?=20init=20=D1=81=20zero=20channels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dispatcher/NotificationsDispatcher.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/ordinis-notifications/src/main/java/cloud/nstart/terravault/ordinis/notifications/dispatcher/NotificationsDispatcher.java b/ordinis-notifications/src/main/java/cloud/nstart/terravault/ordinis/notifications/dispatcher/NotificationsDispatcher.java index cf9e328..c1407ae 100644 --- a/ordinis-notifications/src/main/java/cloud/nstart/terravault/ordinis/notifications/dispatcher/NotificationsDispatcher.java +++ b/ordinis-notifications/src/main/java/cloud/nstart/terravault/ordinis/notifications/dispatcher/NotificationsDispatcher.java @@ -122,9 +122,24 @@ public class NotificationsDispatcher { @PostConstruct void init() { - log.info("NotificationsDispatcher initialized. Channels: {}, reviewerPoolEmail configured: {}", - channels.stream().map(c -> c.kind().wireName()).toList(), - !reviewerPoolEmail.isBlank()); + var channelNames = channels.stream().map(c -> c.kind().wireName()).toList(); + if (channels.isEmpty()) { + // Empty channels = ни один NotificationChannel bean не подключён + // (typically EmailChannel требует spring.mail.host через + // @ConditionalOnBean(JavaMailSender.class)). Dispatcher продолжает + // poll'ить outbox events но silently discards — ничего не отправляется. + // WARN чтобы это visible в monitoring/grep, не терялось среди INFO. + log.warn("NotificationsDispatcher initialized с ZERO channels — events" + + " будут собираться из outbox но НИЧЕГО не будет dispatch'нуто." + + " Чтобы actual delivery работала: set spring.mail.host (для" + + " EmailChannel) или register другой NotificationChannel bean." + + " ReviewerPoolEmail configured: {}", + !reviewerPoolEmail.isBlank()); + } else { + log.info("NotificationsDispatcher initialized. Channels: {}, reviewerPoolEmail configured: {}", + channelNames, + !reviewerPoolEmail.isBlank()); + } } /**