public MessageReceiveBuffer( int prefetch, int bufferSize, TimeSpan readTimeout, TimeSpan sqsWaitTime, ISqsQueue sqsQueue, MiddlewareBase <ReceiveMessagesContext, IList <Message> > sqsMiddleware, IMessageMonitor monitor, ILogger <IMessageReceiveBuffer> logger, IMessageBackoffStrategy messageBackoffStrategy = null) { _prefetch = prefetch; _bufferSize = bufferSize; _readTimeout = readTimeout; _sqsWaitTime = sqsWaitTime; if (sqsQueue == null) { throw new ArgumentNullException(nameof(sqsQueue)); } _sqsQueueReader = new SqsQueueReader(sqsQueue); _sqsMiddleware = sqsMiddleware ?? throw new ArgumentNullException(nameof(sqsMiddleware)); _monitor = monitor ?? throw new ArgumentNullException(nameof(monitor)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _backoffStrategyName = messageBackoffStrategy?.GetType()?.Name; _channel = Channel.CreateBounded <IQueueMessageContext>(bufferSize); if (messageBackoffStrategy != null) { _requestMessageAttributeNames.Add(MessageSystemAttributeName.ApproximateReceiveCount); } }
private async Task When() { var queueReader = new SqsQueueReader(_queue); await SystemUnderTest.DispatchMessageAsync(queueReader.ToMessageContext(_sqsMessage), CancellationToken.None); }
/// <summary> /// A handle for a given message to be deleted from the queue it was read from. /// </summary> /// <param name="message">The <see cref="Amazon.SQS.Model.Message"/> to be handled.</param> /// <param name="queueReader">The <see cref="SqsQueueReader"/> the message was read from.</param> internal QueueMessageContext(Message message, SqsQueueReader queueReader) { Message = message ?? throw new ArgumentNullException(nameof(message)); _queueReader = queueReader ?? throw new ArgumentNullException(nameof(queueReader)); }