Skip to content

Commit

Permalink
Support for endpoint instances discriminator (#54)
Browse files Browse the repository at this point in the history
  • Loading branch information
mauroservienti authored Jan 3, 2024
1 parent 8e422f7 commit bc2037c
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 8 deletions.
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ Section full name: `NServiceBus:EndpointConfiguration`

- `LocalAddressOverride` (string) allows defining the address to override the [default one that matches the endpoint name](https://docs.particular.net/nservicebus/endpoints/specify-endpoint-name#input-queue).
- `PublicReturnAddressOverride` (string) allows overriding the endpoint return/reply address used by other endpoint when replying to messages.
- `EndpointInstanceDiscriminator` (string) allows making [endpoint instances in scaled out environments uniquely addressable](https://docs.particular.net/nservicebus/messaging/routing#make-instance-uniquely-addressable).

## Transport

Expand Down
19 changes: 19 additions & 0 deletions src/Mattox.NServiceBus.Tests/AddressingTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,23 @@ public void Overriding_public_return_address_sets_desired_value()

Assert.Equal(expected, settings.GetOrDefault<string>("PublicReturnAddress"));
}

[Fact]
public void Setting_instance_discriminator_sets_desired_value()
{
var expected = "A";
var config = new ConfigurationBuilder()
.AddInMemoryCollection(new Dictionary<string, string>()
{
{ "NServiceBus:EndpointConfiguration:EndpointInstanceDiscriminator", expected.ToString() }
})
.Build();

var endpoint = new LearningEndpoint("my-endpoint", config);
EndpointConfiguration endpointConfiguration = endpoint;

var settings = endpointConfiguration.GetSettings();

Assert.Equal(expected, settings.GetOrDefault<string>("EndpointInstanceDiscriminator"));
}
}
16 changes: 8 additions & 8 deletions src/Mattox.NServiceBus/NServiceBusEndpoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ protected virtual void FinalizeConfiguration()
ConfigureInstallers(endpointConfiguration, endpointConfigurationSection);
ConfigureSerializer();
ConfigureDiagnostics(endpointConfiguration, endpointConfigurationSection);
ConfigureAddressesOverride(endpointConfiguration, endpointConfigurationSection);
ConfigureAddressingOptions(endpointConfiguration, endpointConfigurationSection);

// TODO create and configure the persistence
// TODO Outbox
Expand All @@ -95,16 +95,10 @@ protected virtual void FinalizeConfiguration()
// TODO
// EndpointConfiguration.EnableOpenTelemetry();

// TODO
// EndpointConfiguration.MakeInstanceUniquelyAddressable();

// TODO
// EndpointConfiguration.UniquelyIdentifyRunningInstance();

endpointConfigurationPreview?.Invoke(endpointConfiguration);
}

static void ConfigureAddressesOverride(EndpointConfiguration endpointConfiguration, IConfigurationSection? endpointConfigurationSection)
static void ConfigureAddressingOptions(EndpointConfiguration endpointConfiguration, IConfigurationSection? endpointConfigurationSection)
{
var localAddressOverride = endpointConfigurationSection?["LocalAddressOverride"];
if (!string.IsNullOrWhiteSpace(localAddressOverride))
Expand All @@ -117,6 +111,12 @@ static void ConfigureAddressesOverride(EndpointConfiguration endpointConfigurati
{
endpointConfiguration.OverridePublicReturnAddress(publicReturnAddressOverride);
}

var instanceDiscriminator = endpointConfigurationSection?["EndpointInstanceDiscriminator"];
if (!string.IsNullOrWhiteSpace(instanceDiscriminator))
{
endpointConfiguration.MakeInstanceUniquelyAddressable(instanceDiscriminator);
}
}

void ConfigureSerializer()
Expand Down

0 comments on commit bc2037c

Please sign in to comment.