public async Task GetMessagesAsync_should_get_messages() { //Arrange var command = new TestCommand(Guid.NewGuid().ToString()); await _bus.SendAsync(command); //Verify processing queue empty var processingQueueLength = await RedisTestBase.Database.ListLengthAsync(RedisQueueConventions.GetProcessingQueueName(_queueName)); processingQueueLength.Should().Be(0); //Act var messages = await _target.GetMessagesAsync(5); //Assert messages.Length.Should().Be(1); var message = messages.First(); message.Message.Should().BeEquivalentTo(command); message.ExpirationKey.Should().NotBeNullOrEmpty(); message.HashEntries.Should().ContainKey(RedisHashKeys.DeliveryCount); var deliveryCount = message.HashEntries.First(e => e.Key.Equals(RedisHashKeys.DeliveryCount)); deliveryCount.Value.Should().Be("1"); processingQueueLength = await RedisTestBase.Database.ListLengthAsync(RedisQueueConventions.GetProcessingQueueName(_queueName)); processingQueueLength.Should().Be(1); }
public async Task DeleteDeadletter_should_delete_deadletter_and_related_data() { //Arrange var message = await SendAndGetMessage(); await _target.DeadletterMessageAsync(message, 1); var deadletter = await _target.PeekDeadlettersAsync(1).FirstAsync(); //Act await _target.DeleteDeadletterAsync(deadletter); //Assert var deadletters = await _target.PeekDeadlettersAsync(1).ToListAsync(); deadletters.Should().BeEmpty(); var hashKey = RedisQueueConventions.GetMessageHashKey(_queueName, deadletter.Message.Id); var hashes = await RedisTestBase.Database.HashGetAllAsync(hashKey).ConfigureAwait(false); hashes.Should().BeEmpty(); var expirationKey = RedisQueueConventions.GetMessageExpirationKey(_queueName, deadletter.Message.Id); var expiration = await RedisTestBase.Database.StringGetAsync(expirationKey); expiration.IsNull.Should().BeTrue(); }
public async Task DeadLetterMessageAsync_should_remove_from_processing_queue_and_put_message_in_deadletter_queue() { //Arrange var message = await SendAndGetMessage(); //Act await _target.DeadletterMessageAsync(message, 1); //Assert var processingQueueLength = await RedisTestBase.Database.ListLengthAsync(RedisQueueConventions.GetProcessingQueueName(_queueName)); processingQueueLength.Should().Be(0); var deadLetterQueueLength = await RedisTestBase.Database.ListLengthAsync(RedisQueueConventions.GetDeadLetterQueueName(_queueName)); deadLetterQueueLength.Should().Be(1); }
public async Task RequeueDeadletterAsync_should_requeue_message_remove_errors_and_delivery_count() { //Arrange var message = await SendAndGetMessage(); await _target.DeadletterMessageAsync(message, 1); //Act await _target.RequeueDeadletterAsync(); //Assert var deadLetterQueueLength = await RedisTestBase.Database.ListLengthAsync(RedisQueueConventions.GetDeadLetterQueueName(_queueName)); deadLetterQueueLength.Should().Be(0); var queueLength = await RedisTestBase.Database.ListLengthAsync(_queueName); queueLength.Should().Be(1); }
public async Task CompleteMessageAsync_should_delete_hash_and_expiration_keys_then_remove_message() { //Arrange var message = await SendAndGetMessage(); //Act await _target.CompleteMessageAsync(message); //Assert var hash = await RedisTestBase.Database.HashGetAllAsync(message.HashKey); hash.Should().BeEmpty(); var expirationKey = await RedisTestBase.Database.StringGetAsync(message.ExpirationKey); expirationKey.HasValue.Should().BeFalse(); var messages = await _target.GetMessagesAsync(1); messages.Length.Should().Be(0); var processingQueueLength = await RedisTestBase.Database.ListLengthAsync(RedisQueueConventions.GetProcessingQueueName(_queueName)); processingQueueLength.Should().Be(0); }
public static string GetAttachmentBinaryKey(string queueName, string id) => $"{RedisQueueConventions.GetMessageHashKey(queueName, id)}:attachment:binary";
public static string GetAttachmentMetadataKey(string queueName, string id) => $"{RedisQueueConventions.GetMessageHashKey(queueName, id)}:attachment:metadata";