namespace Svrnty.CQRS.Events.Abstractions.Subscriptions; /// /// Defines how events are distributed to consumers in a subscription. /// /// /// /// Broadcast: All consumers receive all events (pub/sub pattern). /// Use for notifications where every consumer needs every event. /// /// /// Exclusive: Only one consumer receives each event (queue pattern). /// Use for work distribution where only one worker should process each event. /// /// /// ConsumerGroup: Load-balanced distribution across group members (Kafka-style). /// Use for scalable processing where multiple workers share the load. /// /// /// ReadReceipt: Requires explicit confirmation that user saw the event. /// Use for user notifications where you need to track delivered vs read status. /// /// public enum SubscriptionMode { /// /// Broadcast mode: All consumers receive all events (publish/subscribe pattern). /// Each consumer gets its own copy of every event. /// Broadcast = 0, /// /// Exclusive mode: Only one consumer receives each event (queue pattern). /// Events are distributed to exactly one consumer in a round-robin fashion. /// Exclusive = 1, /// /// Consumer group mode: Load-balanced across group members (Kafka-style partitioning). /// Events are distributed across all active consumers in the group for parallel processing. /// ConsumerGroup = 2, /// /// Read receipt mode: Requires explicit "user saw this" confirmation. /// Tracks delivered vs read status, useful for user-facing notifications with unread counts. /// ReadReceipt = 3 }