in src/Libs/Common/Queues/Queue.cs [22:47]
public Task CreateIfNotExistedAsync() =>
_client.CreateIfNotExistsAsync();
public async Task<QueueMessage<T>?> ReceiveAsync(
TimeSpan? visibilityTimeout,
CancellationToken cancellationToken)
{
while (true)
{
var messages = await _client.ReceiveMessagesAsync(1, visibilityTimeout ?? TimeSpan.FromMinutes(5),
cancellationToken);
if (messages.Value.Length == 0)
{
return null;
}
var msg = messages.Value[0];
if (msg.DequeueCount > 3)
{
await _client.DeleteMessageAsync(msg.MessageId, msg.PopReceipt, cancellationToken);
continue;
}
return new QueueMessage<T>(msg.MessageId, msg.PopReceipt,
JsonConvert.DeserializeObject<T>(msg.MessageText));
}
}