public static async Task <NimbusMessage[]> PopAll(this IDeadLetterOffice deadLetterOffice) { var messages = new List <NimbusMessage>(); while (true) { var message = await deadLetterOffice.Pop(); if (message == null) { break; } messages.Add(message); } return(messages.ToArray()); }
internal Bus(ILogger logger, ICommandSender commandSender, IRequestSender requestSender, IMulticastRequestSender multicastRequestSender, IEventSender eventSender, IMessagePumpsManager messagePumpsManager, IDeadLetterOffice deadLetterOffice, IHeartbeat heartbeat) { _logger = logger; _commandSender = commandSender; _requestSender = requestSender; _multicastRequestSender = multicastRequestSender; _eventSender = eventSender; _heartbeat = heartbeat; _messagePumpsManager = messagePumpsManager; DeadLetterOffice = deadLetterOffice; Started += async delegate { await _heartbeat.Start(); }; Stopping += async delegate { await _heartbeat.Stop(); }; }
public MessagePump(EnableDeadLetteringOnMessageExpirationSetting enableDeadLetteringOnMessageExpiration, MaxDeliveryAttemptSetting maxDeliveryAttempts, IClock clock, IDeadLetterOffice deadLetterOffice, IDelayedDeliveryService delayedDeliveryService, IDeliveryRetryStrategy deliveryRetryStrategy, IDispatchContextManager dispatchContextManager, ILogger logger, IMessageDispatcher messageDispatcher, INimbusMessageReceiver receiver) { _enableDeadLetteringOnMessageExpiration = enableDeadLetteringOnMessageExpiration; _maxDeliveryAttempts = maxDeliveryAttempts; _clock = clock; _dispatchContextManager = dispatchContextManager; _logger = logger; _messageDispatcher = messageDispatcher; _receiver = receiver; _deadLetterOffice = deadLetterOffice; _delayedDeliveryService = delayedDeliveryService; _deliveryRetryStrategy = deliveryRetryStrategy; }
public static async Task <NimbusMessage[]> PopAll(this IDeadLetterOffice deadLetterOffice, int numMessagesExpected, TimeSpan timeout) { var messages = new List <NimbusMessage>(); while (true) { var message = await deadLetterOffice.Pop(); if (message == null) { if (messages.Count == numMessagesExpected) { break; } await Task.Delay(TimeSpan.FromMilliseconds(100)); continue; } messages.Add(message); } return(messages.ToArray()); }