/
vshmidt
/
masstransit
Обзор
Документация
Войти
/
vshmidt
/
masstransit
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
src/MassTransit/Testing/Implementations/BusTestConsumeObserver.cs
48 строк
1 KB
Chris Patterson
Added the transport and test harness options for Azure Service Bus, and reworked the way the AsyncElementList deals with messages.
28 ноя 2022, 01:20
28 ноя 2022, 01:20
38f4de5
Код
Авторство
О чём код?
namespace MassTransit.Testing.Implementations { using System; using System.Threading; using System.Threading.Tasks; public class BusTestConsumeObserver : InactivityTestObserver, IConsumeObserver { readonly ReceivedMessageList _messages; int _activeCount; public BusTestConsumeObserver(TimeSpan timeout, CancellationToken testCompleted) { _messages = new ReceivedMessageList(timeout, testCompleted); } public IReceivedMessageList Messages => _messages; public override bool IsInactive => _activeCount == 0; public Task PreConsume<T>(ConsumeContext<T> context) where T : class { Interlocked.Increment(ref _activeCount); return Task.CompletedTask; } public Task PostConsume<T>(ConsumeContext<T> context) where T : class { _messages.Add(context); return Interlocked.Decrement(ref _activeCount) == 0 ? NotifyInactive() : Task.CompletedTask; } public Task ConsumeFault<T>(ConsumeContext<T> context, Exception exception) where T : class { _messages.Add(context, exception); return Interlocked.Decrement(ref _activeCount) == 0 ? NotifyInactive() : Task.CompletedTask; } } }