/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Configuration/DependencyInjection/DelayedMessageSchedulerRegistrationExtensions.cs
39 строк
2 KB
denys.kozhevnikov
Register RecurringScheduler in IoC
31 июл 2023, 21:04
31 июл 2023, 21:04
b073aab
Код
Авторство
О чём код?
namespace MassTransit { using DependencyInjection; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; public static class DelayedMessageSchedulerRegistrationExtensions { /// <summary> /// Add a <see cref="IMessageScheduler" /> to the container that uses transport message delay to schedule messages /// </summary> /// <param name="configurator"></param> public static void AddDelayedMessageScheduler(this IBusRegistrationConfigurator configurator) { configurator.TryAddScoped(provider => { var bus = provider.GetRequiredService<IBus>(); var sendEndpointProvider = provider.GetRequiredService<ISendEndpointProvider>(); return sendEndpointProvider.CreateDelayedMessageScheduler(bus.Topology); }); } /// <summary> /// Add a <see cref="IMessageScheduler" /> to the container that uses transport message delay to schedule messages /// </summary> /// <param name="configurator"></param> public static void AddDelayedMessageScheduler<TBus>(this IBusRegistrationConfigurator<TBus> configurator) where TBus : class, IBus { configurator.TryAddScoped(provider => { var bus = provider.GetRequiredService<TBus>(); var sendEndpointProvider = provider.GetRequiredService<Bind<TBus, ISendEndpointProvider>>().Value; return Bind<TBus>.Create(sendEndpointProvider.CreateDelayedMessageScheduler(bus.Topology)); }); } } }