/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Middleware/DelayedMessageRedeliveryContext.cs
40 строк
1 KB
Chris Patterson
Adding nullability to abstractions, and fixing warnings
15 фев 2022, 17:36
15 фев 2022, 17:36
8a72e94
Код
Авторство
О чём код?
#nullable enable namespace MassTransit.Middleware { using System; using System.Threading.Tasks; using Serialization; public class DelayedMessageRedeliveryContext<TMessage> : MessageRedeliveryContext where TMessage : class { readonly ConsumeContext<TMessage> _context; readonly RedeliveryOptions _options; public DelayedMessageRedeliveryContext(ConsumeContext<TMessage> context, RedeliveryOptions options) { _context = context; _options = options; } public async Task ScheduleRedelivery(TimeSpan delay, Action<ConsumeContext, SendContext>? callback) { IPipe<SendContext<TMessage>> pipe = Pipe.Execute<SendContext<TMessage>>(sendContext => { sendContext.ApplyRedeliveryOptions(_context, _options); callback?.Invoke(_context, sendContext); }); IPipe<SendContext<TMessage>> delaySendPipe = new DelaySendPipe<TMessage>(pipe, delay); var endpoint = await _context.GetSendEndpoint(_context.ReceiveContext.InputAddress).ConfigureAwait(false); var messagePipe = new ForwardMessagePipe<TMessage>(_context, delaySendPipe); await endpoint.Send(_context.Message, messagePipe, _context.CancellationToken).ConfigureAwait(false); } } }