public SqsPollingQueueReader(SqsPollingQueueReaderOptions queueReaderOptions, IAmazonSQS amazonSqs, ISqsReceiveDelayCalculator pollingDelayer, IExceptionHandler exceptionHandler, Channel <Message> channel = null) { _queueReaderOptions = queueReaderOptions ?? throw new ArgumentNullException(nameof(queueReaderOptions)); _amazonSqs = amazonSqs ?? throw new ArgumentNullException(nameof(amazonSqs)); _pollingDelayer = pollingDelayer ?? throw new ArgumentNullException(nameof(pollingDelayer)); if (queueReaderOptions.ReceiveMessageRequest is object) { _receiveMessageRequest = queueReaderOptions.ReceiveMessageRequest; } else { _receiveMessageRequest = new ReceiveMessageRequest { QueueUrl = queueReaderOptions.QueueUrl ?? throw new ArgumentNullException(nameof(queueReaderOptions), "A queue URL is required for the polling queue reader to be created"), MaxNumberOfMessages = queueReaderOptions.MaxMessages, WaitTimeSeconds = queueReaderOptions.PollTimeInSeconds }; } _exceptionHandler = exceptionHandler ?? DefaultExceptionHandler.Instance; _channel = channel ?? Channel.CreateBounded <Message>(new BoundedChannelOptions(queueReaderOptions.ChannelCapacity) { SingleWriter = true }); }
public SqsReceiveDelayCalculator(SqsPollingQueueReaderOptions queueReaderOptions) { _queueReaderOptions = queueReaderOptions ?? throw new ArgumentNullException(nameof(queueReaderOptions)); }