/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Scheduling/DelayedScheduleMessageProvider.cs
48 строк
2 KB
Chris Patterson
AddSqlMessageScheduler() method created so that scheduled messages can be canceled
17 май 2024, 17:42
17 май 2024, 17:42
40775e9
Код
Авторство
О чём код?
namespace MassTransit.Scheduling { using System; using System.Threading; using System.Threading.Tasks; public class DelayedScheduleMessageProvider : IScheduleMessageProvider { readonly ISendEndpointProvider _sendEndpointProvider; public DelayedScheduleMessageProvider(ISendEndpointProvider sendEndpointProvider) { _sendEndpointProvider = sendEndpointProvider; } public async Task<ScheduledMessage<T>> ScheduleSend<T>(Uri destinationAddress, DateTime scheduledTime, T message, IPipe<SendContext<T>> pipe, CancellationToken cancellationToken) where T : class { if (!MessageTypeCache<T>.IsValidMessageType) throw new ArgumentException(MessageTypeCache<T>.InvalidMessageTypeReason, nameof(T)); var scheduleMessagePipe = new ScheduleSendPipe<T>(pipe, scheduledTime); var tokenId = ScheduleTokenIdCache<T>.GetTokenId(message); scheduleMessagePipe.ScheduledMessageId = tokenId; var schedulerEndpoint = await _sendEndpointProvider.GetSendEndpoint(destinationAddress).ConfigureAwait(false); await schedulerEndpoint.Send(message, scheduleMessagePipe, cancellationToken).ConfigureAwait(false); return new ScheduledMessageHandle<T>(scheduleMessagePipe.ScheduledMessageId ?? NewId.NextGuid(), scheduledTime, destinationAddress, message); } public Task CancelScheduledSend(Guid tokenId, CancellationToken cancellationToken) { return Task.CompletedTask; } public Task CancelScheduledSend(Uri destinationAddress, Guid tokenId, CancellationToken cancellationToken) { return Task.CompletedTask; } } }