Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 20 additions & 7 deletions src/Fluent.Brighter/ConsumerBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,18 @@ public ConsumerBuilder SetResiliencePipelineRegistry(
_resiliencePipelineRegistry = resiliencePipelineRegistry;
return this;
}

/// <summary>
/// Adds a resilience pipeline to the registry
/// </summary>
/// <param name="key">The pipeline lookup key</param>
/// <param name="configure">Configuration action for the pipeline builder</param>
/// <returns>The ConsumerBuilder instance for fluent chaining</returns>
public ConsumerBuilder AddResiliencePipeline(string key, Action<ResiliencePipelineBuilder, ConfigureBuilderContext<string>> configure)
{
_resiliencePipelineRegistry.TryAddBuilder(key, configure);
return this;
}

/// <summary>
/// Adds a resilience pipeline to the registry
Expand All @@ -154,8 +166,7 @@ public ConsumerBuilder SetResiliencePipelineRegistry(
public ConsumerBuilder AddResiliencePipeline<TPolicy>(string key,
Action<ResiliencePipelineBuilder, ConfigureBuilderContext<string>> configure)
{
_resiliencePipelineRegistry.TryAddBuilder(key, configure);
return this;
return AddResiliencePipeline(key, configure);
}

private IAmAChannelFactory? _defaultChannelFactory;
Expand Down Expand Up @@ -184,17 +195,19 @@ public ConsumerBuilder AddChannelFactory(IAmAChannelFactory channelFactory)
return this;
}

private InboxConfiguration? _inboxConfiguration = new();

/// <summary>
/// Configures the inbox settings for idempotency
/// </summary>
/// <param name="inboxConfiguration">The inbox configuration</param>
/// <returns>The ConsumerBuilder instance for fluent chaining</returns>
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();
Expand Down Expand Up @@ -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);
Expand Down
Loading