如何在查看后从队列中删除消息?

How to remove message from a queue after peek?

我正在从队列中获取一批消息,然后选择我要查找的消息,然后如何将其余消息移回队列?或者只是将我需要的那个标记为不再可用?

var receiverClient = new MessageReceiver("ConnectionString", "MyQueue");

// getting a list of 100 
var messageList = await receiverClient.PeekAsync(100);

var myMessage = messageList?.Where(x => x.MessageId == "MessageGuid").FirstOrDefault();

在那之后,我试过做这样的事情:

await receiverClient.RenewLockAsync(myMessage);
await receiverClient.CompleteAsync(myMessage.SystemProperties.LockToken);

但那次使用失败,我认为一定与我收到一批队列有关。有什么想法吗?

我想的另一种方法是创建另一个客户端(一个能够发送消息的客户端)然后使用 Receive() 而不是 Peek() 但我确实有 2 个客户端,我会这样做过程也有点慢

您需要 Receive() 处于 Peek-Lock 模式的消息,并将对要从队列中删除的消息调用 Abandon() on the messages that you would like to send back to queue and Complete()