From c0ab9b23e3660119e4fea68dbe84ff2a977fc933 Mon Sep 17 00:00:00 2001 From: Rafael Andrade Date: Mon, 10 Nov 2025 12:11:05 +0000 Subject: [PATCH] fix: Inbox configuration --- src/Fluent.Brighter/ConsumerBuilder.cs | 27 +++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/Fluent.Brighter/ConsumerBuilder.cs b/src/Fluent.Brighter/ConsumerBuilder.cs index b2ae858..9e2cd7d 100644 --- a/src/Fluent.Brighter/ConsumerBuilder.cs +++ b/src/Fluent.Brighter/ConsumerBuilder.cs @@ -143,6 +143,18 @@ public ConsumerBuilder SetResiliencePipelineRegistry( _resiliencePipelineRegistry = resiliencePipelineRegistry; return this; } + + /// + /// Adds a resilience pipeline to the registry + /// + /// The pipeline lookup key + /// Configuration action for the pipeline builder + /// The ConsumerBuilder instance for fluent chaining + public ConsumerBuilder AddResiliencePipeline(string key, Action> configure) + { + _resiliencePipelineRegistry.TryAddBuilder(key, configure); + return this; + } /// /// Adds a resilience pipeline to the registry @@ -154,8 +166,7 @@ public ConsumerBuilder SetResiliencePipelineRegistry( public ConsumerBuilder AddResiliencePipeline(string key, Action> configure) { - _resiliencePipelineRegistry.TryAddBuilder(key, configure); - return this; + return AddResiliencePipeline(key, configure); } private IAmAChannelFactory? _defaultChannelFactory; @@ -184,8 +195,6 @@ public ConsumerBuilder AddChannelFactory(IAmAChannelFactory channelFactory) return this; } - private InboxConfiguration? _inboxConfiguration = new(); - /// /// Configures the inbox settings for idempotency /// @@ -193,8 +202,12 @@ public ConsumerBuilder AddChannelFactory(IAmAChannelFactory channelFactory) /// The ConsumerBuilder instance for fluent chaining public ConsumerBuilder SetInbox(InboxConfiguration inboxConfiguration) { - _inboxConfiguration = inboxConfiguration; - return this; + return SetInbox(i => i + .SetInbox(inboxConfiguration.Inbox) + .SetActionOnExists(inboxConfiguration.ActionOnExists) + .SetContext(inboxConfiguration.Context) + .SetOnceOnly(inboxConfiguration.OnceOnly) + .SetScope(inboxConfiguration.Scope)); } private readonly InboxConfigurationBuilder _inboxConfigurationBuilder = new(); @@ -266,7 +279,7 @@ internal void SetConsumerOptions(ConsumersOptions options) #pragma warning restore CS0618 // Type or member is obsolete options.DefaultChannelFactory = _defaultChannelFactory; - options.InboxConfiguration = _inboxConfiguration ?? _inboxConfigurationBuilder.Build(); + options.InboxConfiguration = _inboxConfigurationBuilder.Build(); options.Subscriptions = _subscriptions; _configuration?.Invoke(options);