/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit.Abstractions/Configuration/DependencyInjection/ActivityDefinition.cs
86 строк
4 KB
Chris Patterson
Massive file cleanup
27 мар 2024, 02:43
27 мар 2024, 02:43
2ac69e8
Код
Авторство
О чём код?
namespace MassTransit { using System; using Configuration; public class ActivityDefinition<TActivity, TArguments, TLog> : ExecuteActivityDefinition<TActivity, TArguments>, IActivityDefinition<TActivity, TArguments, TLog> where TActivity : class, IActivity<TArguments, TLog> where TLog : class where TArguments : class { string? _compensateEndpointName; /// <summary> /// Specify the endpoint name (which may be a queue, or a subscription, depending upon the transport) on which the saga /// should be configured. Setting to null will use the supplied <see cref="IEndpointNameFormatter" /> to generate the /// endpoint name. /// </summary> protected string CompensateEndpointName { set => _compensateEndpointName = value; } public IEndpointDefinition<ICompensateActivity<TLog>>? CompensateEndpointDefinition { get; set; } IEndpointDefinition? IActivityDefinition.CompensateEndpointDefinition => CompensateEndpointDefinition; void IActivityDefinition<TActivity, TArguments, TLog>.Configure(IReceiveEndpointConfigurator endpointConfigurator, ICompensateActivityConfigurator<TActivity, TLog> compensateActivityConfigurator, IRegistrationContext context) { if (ConcurrentMessageLimit.HasValue) compensateActivityConfigurator.ConcurrentMessageLimit = ConcurrentMessageLimit; #pragma warning disable CS0618 ConfigureCompensateActivity(endpointConfigurator, compensateActivityConfigurator); #pragma warning restore CS0618 ConfigureCompensateActivity(endpointConfigurator, compensateActivityConfigurator, context); } string IActivityDefinition.GetCompensateEndpointName(IEndpointNameFormatter formatter) { return string.IsNullOrWhiteSpace(_compensateEndpointName) ? _compensateEndpointName = CompensateEndpointDefinition?.GetEndpointName(formatter) ?? formatter.CompensateActivity<TActivity, TLog>() : _compensateEndpointName!; } Type IActivityDefinition.LogType => typeof(TLog); /// <summary> /// Configure the compensate endpoint /// </summary> /// <param name="configure"></param> protected void CompensateEndpoint(Action<IEndpointRegistrationConfigurator>? configure = null) { var configurator = new EndpointRegistrationConfigurator<ICompensateActivity<TLog>> { ConfigureConsumeTopology = false }; configure?.Invoke(configurator); CompensateEndpointDefinition = new CompensateActivityEndpointDefinition<TActivity, TLog>(configurator.Settings); } /// <summary> /// Called when the compensate activity is being configured on the endpoint. /// </summary> /// <param name="endpointConfigurator">The receive endpoint configurator for the consumer</param> /// <param name="compensateActivityConfigurator"></param> [Obsolete("Use the IRegistrationContext overload instead. Visit https://masstransit.io/obsolete for details.")] protected virtual void ConfigureCompensateActivity(IReceiveEndpointConfigurator endpointConfigurator, ICompensateActivityConfigurator<TActivity, TLog> compensateActivityConfigurator) { } /// <summary> /// Called when the compensate activity is being configured on the endpoint. /// </summary> /// <param name="endpointConfigurator">The receive endpoint configurator for the consumer</param> /// <param name="compensateActivityConfigurator"></param> /// <param name="context"></param> protected virtual void ConfigureCompensateActivity(IReceiveEndpointConfigurator endpointConfigurator, ICompensateActivityConfigurator<TActivity, TLog> compensateActivityConfigurator, IRegistrationContext context) { } } }