Skip to content

Commit 1d92e09

Browse files
author
Christian
committed
Add new configuration API for Transactional Session v3.3.0
1 parent 354ace0 commit 1d92e09

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

src/NServiceBus.NHibernate.Tests/ApprovalFiles/APIApprovals.Approve.approved.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ namespace NServiceBus
2626
}
2727
public static class OutboxSettingsExtensions
2828
{
29+
public static void EndpointName(this NServiceBus.Outbox.OutboxSettings configuration, string endpointName) { }
2930
public static void TransactionIsolationLevel(this NServiceBus.Outbox.OutboxSettings outboxSettings, System.Data.IsolationLevel isolationLevel) { }
3031
public static void UsePessimisticConcurrencyControl(this NServiceBus.Outbox.OutboxSettings outboxSettings) { }
3132
public static void UseTransactionScope(this NServiceBus.Outbox.OutboxSettings outboxSettings) { }

src/NServiceBus.NHibernate/Outbox/NHibernateOutbox.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class NHibernateOutbox : Feature
2424
internal const string OutboxTransactionModeSettingsKey = "NServiceBus.NHibernate.OutboxTransactionScopeMode";
2525
internal const string OutboxTransactionIsolationLevelSettingsKey = "NServiceBus.NHibernate.OutboxTransactionIsolationLevel";
2626
internal const string OutboxTransactionScopeModeIsolationLevelSettingsKey = "NServiceBus.NHibernate.OutboxTransactionScopeModeIsolationLevel";
27-
27+
internal const string EndpointNameKey = "NHibernate.Outbox.EndpointName";
2828
/// <summary>
2929
/// Creates a new instance of the feature
3030
/// </summary>
@@ -73,7 +73,8 @@ protected override void Setup(FeatureConfigurationContext context)
7373
context.Services.AddSingleton<IOutboxStorage>(sp =>
7474
{
7575
var holder = sp.GetRequiredService<SessionFactoryHolder>();
76-
var persister = persisterFactory.Create(holder.SessionFactory, context.Settings.EndpointName(), pessimisticMode, transactionScopeMode, adoIsolationLevel, transactionScopeIsolationLevel);
76+
var endpointName = context.Settings.GetOrDefault<string>(EndpointNameKey) ?? context.Settings.EndpointName();
77+
var persister = persisterFactory.Create(holder.SessionFactory, endpointName, pessimisticMode, transactionScopeMode, adoIsolationLevel, transactionScopeIsolationLevel);
7778
return persister;
7879
});
7980

src/NServiceBus.NHibernate/Outbox/OutboxSettingsExtensions.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,18 @@ or IsolationLevel.Snapshot
7171
outboxSettings.GetSettings().Set(NHibernateOutbox.OutboxTransactionModeSettingsKey, true);
7272
outboxSettings.GetSettings().Set(NHibernateOutbox.OutboxTransactionScopeModeIsolationLevelSettingsKey, isolationLevel);
7373
}
74+
75+
/// <summary>
76+
/// Sets the endpoint name used to generate qualified message IDs, ensuring uniqueness and preventing ID collisions.
77+
/// By default, this value is automatically managed and set to the originating endpoint's name.
78+
/// This function allows overriding the default endpoint name for specific scenarios, such as configuring a transactional session processor endpoint.
79+
/// </summary>
80+
public static void EndpointName(this OutboxSettings configuration, string endpointName)
81+
{
82+
ArgumentNullException.ThrowIfNull(configuration);
83+
ArgumentException.ThrowIfNullOrWhiteSpace(endpointName);
84+
85+
configuration.GetSettings().Set(NHibernateOutbox.EndpointNameKey, endpointName);
86+
}
7487
}
7588
}

0 commit comments

Comments
 (0)