Я хочу, чтобы иметь возможность удалять выбранные сообщения из моей очереди.Заполните сообщение в очереди с мертвой буквой на Azure Service Bus
Как это делается?
Я постоянно получаю сообщение об ошибке:
Операция не может быть завершена, поскольку RecieveContext является Null
Я попробовал каждый подход я могу думать и читать о, вот где я сейчас:
public void DeleteMessageFromDeadletterQueue<T>(string queueName, long sequenceNumber)
{
var client = GetQueueClient(queueName, true);
var messages = GetMessages(client);
foreach(var m in messages)
{
if(m.SequenceNumber == sequenceNumber)
{
m.Complete();
}
else
{
m.Abandon();
}
}
}
/// <summary>
/// Return a list of all messages in a Queue
/// </summary>
/// <param name="client"></param>
/// <returns></returns>
private IEnumerable<BrokeredMessage> GetMessages(QueueClient client)
{
var peekedMessages = client.PeekBatch(0, peekedMessageBatchCount).ToList();
bool getmore = peekedMessages.Count() == peekedMessageBatchCount ? true : false;
while (getmore)
{
var moreMessages = client.PeekBatch(peekedMessages.Last().SequenceNumber, peekedMessageBatchCount);
peekedMessages.AddRange(moreMessages);
getmore = moreMessages.Count() == peekedMessageBatchCount ? true : false;
}
return peekedMessages;
}
Не знаете, почему это кажется такой трудной задачей.
спасибо за указывая свою ошибку здесь, тьфу, теперь я просто нужен способ, чтобы получить все сообщения из очереди – Slee
я не думаю, вы имеете в виду это так, но вы не хотите получать ВСЕ сообщения из очереди в одно и то же время. Это немного опасно, поскольку неизвестно, сколько на самом деле находится в очереди. Это действительно для обработки очереди мертвых букв? Какие числа вы видите в очереди мертвых букв? – MikeWo