diff --git a/src/KArtSell.BuildingBlocks/Reliability/DapperOutboxMessageReader.cs b/src/KArtSell.BuildingBlocks/Reliability/DapperOutboxMessageReader.cs index e4323610..0e83531d 100644 --- a/src/KArtSell.BuildingBlocks/Reliability/DapperOutboxMessageReader.cs +++ b/src/KArtSell.BuildingBlocks/Reliability/DapperOutboxMessageReader.cs @@ -60,6 +60,11 @@ public sealed class DapperOutboxMessageReader(IDbConnectionFactory connectionFac cancellationToken: cancellationToken)); } + /// + /// Insert inbox record to mark message as published/delivery-ready. + /// Consumer parameter identifies the delivery mechanism (e.g., 'outbox-poller' = ready marker). + /// Actual downstream consumers poll inbox_message to retrieve and deliver to end recipients. + /// public async Task InsertInboxAsync( string consumer, Guid messageId, diff --git a/src/KArtSell.Host/Jobs/OutboxPollerJob.cs b/src/KArtSell.Host/Jobs/OutboxPollerJob.cs index e98146ab..93459004 100644 --- a/src/KArtSell.Host/Jobs/OutboxPollerJob.cs +++ b/src/KArtSell.Host/Jobs/OutboxPollerJob.cs @@ -5,6 +5,16 @@ using Microsoft.Extensions.Logging; namespace KArtSell.Host.Jobs; +/// +/// Outbox Poller: Publishes unpublished messages to inbox and marks as delivered. +/// +/// Design: Consumer='outbox-poller' in inbox_message is a delivery-ready marker. +/// Actual event dispatch (SignalR, email, webhook, etc.) is delegated to future +/// downstream consumer implementations that read inbox_message. +/// +/// This separation allows Outbox pattern's durability guarantees without blocking +/// on the specific delivery mechanism. +/// public sealed class OutboxPollerJob( DapperOutboxMessageReader reader, IClock clock,