/// <summary> /// Configure service endpoints for all defined consumer, saga, and activity types using an optional /// endpoint name formatter. If no endpoint name formatter is specified, and an <see cref="IEndpointNameFormatter"/> /// is registered in the container, it is resolved from the container. Otherwise, the <see cref="DefaultEndpointNameFormatter"/> /// is used. /// </summary> /// <param name="configurator">The <see cref="IBusFactoryConfigurator"/> for the bus being configured</param> /// <param name="registration">The container registration</param> /// <param name="options">The service instance options</param> /// <typeparam name="TEndpointConfigurator">The ReceiveEndpointConfigurator type for the transport</typeparam> public static void ConfigureServiceEndpoints <TEndpointConfigurator>(this IReceiveConfigurator <TEndpointConfigurator> configurator, IRegistrationContext <IComponentContext> registration, ServiceInstanceOptions options = null) where TEndpointConfigurator : IReceiveEndpointConfigurator { options ??= new ServiceInstanceOptions(); if (options.EndpointNameFormatter is DefaultEndpointNameFormatter && registration.Container.TryResolve <IEndpointNameFormatter>(out var formatter)) { options.SetEndpointNameFormatter(formatter); } configurator.ServiceInstance(options, instanceConfigurator => { registration.ConfigureEndpoints(instanceConfigurator, instanceConfigurator.EndpointNameFormatter); }); }
/// <summary> /// Configure service endpoints for all defined consumer, saga, and activity types using an optional /// endpoint name formatter. If no endpoint name formatter is specified, and an <see cref="IEndpointNameFormatter"/> /// is registered in the container, it is resolved from the container. Otherwise, the <see cref="DefaultEndpointNameFormatter"/> /// is used. /// </summary> /// <param name="configurator">The <see cref="IBusFactoryConfigurator"/> for the bus being configured</param> /// <param name="registration">The container registration</param> /// <param name="options">The service instance options</param> /// <typeparam name="TEndpointConfigurator">The ReceiveEndpointConfigurator type for the transport</typeparam> public static void ConfigureServiceEndpoints <TEndpointConfigurator>(this IReceiveConfigurator <TEndpointConfigurator> configurator, IRegistrationContext <IServiceProvider> registration, ServiceInstanceOptions options = null) where TEndpointConfigurator : IReceiveEndpointConfigurator { options ??= new ServiceInstanceOptions(); if (options.EndpointNameFormatter is DefaultEndpointNameFormatter) { var formatter = registration.Container.GetService <IEndpointNameFormatter>(); if (formatter != null) { options.SetEndpointNameFormatter(formatter); } } configurator.ServiceInstance(options, instanceConfigurator => { registration.ConfigureEndpoints(instanceConfigurator, instanceConfigurator.EndpointNameFormatter); }); }