Closed sabbadino closed 4 years ago
Oh, this is because Rebus' Azure Service Bus transport registers a topic name convention too.
If you change your UseTopicNameFromAssemblyAndClassName
extension to use Decorate
instead of Register
, then it can still register its convention.
after upgrading to Rebus" Version="6.1.0" Rebus.AzureServiceBus" Version="7.1.0 Rebus.Serilog" Version="6.0.0 Rebus.ServiceProvider" Version="5.0.2
( This is my registration code with a custom ITopicNameConvention
services.AddRebus(configure => { return configure .Transport(t => t.UseAzureServiceBus( serviceBusSettingsValues.ConnectionString , serviceQueueName)) .Logging(l => l.Serilog()).Options(o => { o.UseTopicNameFromAssemblyAndClassName(); }).Options(o => { o.SetMaxParallelism(1); o.SetNumberOfWorkers(1);}); }); ) I get this error Attempted to register primary -> Rebus.Topic.ITopicNameConvention, but a primary registration already exists: primary -> Rebus.Topic.ITopicNameConvention
This exception was originally thrown at this call stack: Rebus.Injection.Injectionist.Register(System.Func<Rebus.Injection.IResolutionContext, TService>, bool, string) in Injectionist.cs
Dmbo.V3.Infrastructure.Rebus.ShortTopicsRebusConfigurationExtensions.UseTopicNameFromAssemblyAndClassName(Rebus.Config.OptionsConfigurer) in ShortTopicsRebusConfigurationExtensions.cs Dmbo.v3.Partner.Api.Startup.ConfigureServices.AnonymousMethod__1_5(Rebus.Config.OptionsConfigurer) in Startup.cs Rebus.Config.RebusConfigurer.Options(System.Action) in RebusConfigurer.cs
Dmbo.v3.Partner.Api.Startup.ConfigureServices.AnonymousMethod1(Rebus.Config.RebusConfigurer) in Startup.cs
Rebus.ServiceProvider.ServiceCollectionExtensions.AddRebus.AnonymousMethod4(System.IServiceProvider)
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(Microsoft.Extensions.DependencyInjection.ServiceLookup.FactoryCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor<TArgument, TResult>.VisitCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.IServiceCallSite, TArgument)
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitScoped(Microsoft.Extensions.DependencyInjection.ServiceLookup.ScopedCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitSingleton(Microsoft.Extensions.DependencyInjection.ServiceLookup.SingletonCallSite, Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope)
...
[Call Stack Truncated]