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
            });
        }
Esempio n. 2
0
 public SqsReceiveDelayCalculator(SqsPollingQueueReaderOptions queueReaderOptions)
 {
     _queueReaderOptions = queueReaderOptions ?? throw new ArgumentNullException(nameof(queueReaderOptions));
 }