/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/Persistence/MassTransit.Azure.Table/Configuration/AzureTableRepositoryRegistrationExtensions.cs
58 строк
2 KB
Chris Patterson
Refactored job service for container-based configuration and eliminated the need for service instance configuration. Added extensions for Cosmos, Redis, MongoDB, Azure Table, EF Core
15 июл 2023, 19:21
15 июл 2023, 19:21
dd63fcf
Код
Авторство
О чём код?
namespace MassTransit { using System; using Configuration; public static class AzureTableRepositoryRegistrationExtensions { /// <summary> /// Adds a Azure Table saga repository to the registration /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static ISagaRegistrationConfigurator<T> AzureTableRepository<T>(this ISagaRegistrationConfigurator<T> configurator, Action<IAzureTableSagaRepositoryConfigurator<T>> configure = null) where T : class, ISaga { var repositoryConfigurator = new AzureTableSagaRepositoryConfigurator<T>(); configure?.Invoke(repositoryConfigurator); repositoryConfigurator.Validate().ThrowIfContainsFailure("The Azure Table saga repository configuration is invalid:"); configurator.Repository(x => repositoryConfigurator.Register(x)); return configurator; } /// <summary> /// Configure the Job Service saga state machines to use Azure Table Storage /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> /// <returns></returns> public static IJobSagaRegistrationConfigurator AzureTableRepository(this IJobSagaRegistrationConfigurator configurator, Action<IAzureTableSagaRepositoryConfigurator> configure) { var registrationProvider = new AzureTableSagaRepositoryRegistrationProvider(configure); configurator.UseRepositoryRegistrationProvider(registrationProvider); return configurator; } /// <summary> /// Use the Azure Table saga repository for sagas configured by type (without a specific generic call to AddSaga/AddSagaStateMachine) /// </summary> /// <param name="configurator"></param> /// <param name="configure"></param> public static void SetAzureTableSagaRepositoryProvider(this IRegistrationConfigurator configurator, Action<IAzureTableSagaRepositoryConfigurator> configure) { configurator.SetSagaRepositoryProvider(new AzureTableSagaRepositoryRegistrationProvider(configure)); } } }