peek 和 receive 之间的区别(azure 服务总线)

Difference between peek and receive (azure service bus)

有谁知道 azure 服务总线中 receive 和 peek 选项的区别?

var client = new MessageReceiver("ServiceBusConnectionString", "Queue");

// difference between this one:
var peekResults =  await client.PeekAsync(100);

// and this one
var receiveResults = await client.ReceiveAsync(100);

我知道我可以获得相同的结果,但我想知道我应该使用哪一个,为什么?那么在内部会有什么区别?

Peek 将获取消息 w/o 增加递送计数器。这是一种“预览”消息的方法 w/o 从队列中删除。

接收会增加投递计数器。当以 ReceiveAndDelete 模式接收时,消息将从队列中消失。使用 PeekLock 模式的消息将保留在队列中,除非超过 MaxDeliveryCount 并且它们将是死信。