示例#1
0
        public async Task <IEnumerable <AzureEmailQueueMessage> > ReceiveAsync(int number, CancellationToken cancellationToken)
        {
            _logger.LogTrace("Receiving {0} message(s)", number);

            if (!_initialized)
            {
                await InitializeAsync(cancellationToken);
            }

            if (number > MaxMessagesToRetrieve)
            {
                throw new ArgumentOutOfRangeException(nameof(number), $"The {GetType().Name} implementation of `IEmailQueueReceiver<TMessage>` can only dequeue up to {MaxMessagesToRetrieve} message(s) at a time");
            }

            if (number < 1)
            {
                throw new ArgumentOutOfRangeException(nameof(number), $"The parameter `number` of `IEmailQueueReceiver` must be a positive integer greater than or equal to one, as you can't retrieve zero messages or less");
            }

            var tokens = new List <AzureEmailQueueMessage>();

            foreach (var message in await _queue.Value.GetMessagesAsync(number, null, null, null, cancellationToken))
            {
                tokens.Add(new AzureEmailQueueMessage
                {
                    Token        = EmailQueueToken.DecodeBytes(message.AsBytes),
                    MessageId    = message.Id,
                    PopReceipt   = message.PopReceipt,
                    DequeueCount = message.DequeueCount
                });
            }

            return(tokens);
        }
示例#2
0
        public void DecodeBytes_ShouldThrowArgumentException_IfByteArrayIsNotCorrectLength()
        {
            // arrange
            var bytes = new byte[8] {
                0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8
            };

            // act/assert
            Assert.Throws <ArgumentOutOfRangeException>(() => EmailQueueToken.DecodeBytes(bytes));
        }
示例#3
0
        public void DecodeBytes_ShouldDeserializeValidByteArray()
        {
            // arrange
            var original = EmailQueueToken.Create(Application1);
            var bytes    = original.EncodeBytes();

            // act
            var decoded = EmailQueueToken.DecodeBytes(bytes);

            // assert
            Assert.Equal(original.TimeStamp, decoded.TimeStamp);
            Assert.Equal(original.RequestId, decoded.RequestId);
        }