我正在使用 Microsoft 服务总线测试一个带有死信队列的项目。我发送了 26 条消息(代表字母表),并使用了一个程序,该程序在接收消息时将其中一些随机放入死信队列中。消息总是以偷看模式从死信队列中读取,所以一旦它们到达那里,它们就会呆在那里。运行几次后,所有 26 条消息都会在死信队列中,并且一直保留在那里。
然而,在阅读它们时,有时只阅读了几个(例如 6 个),有时是全部 26 个。
我使用命令:
const int maxToRead = 200; // It seems one wants to set this higher than
// the anticipated load, obtaining only some back
IEnumerable<BrokeredMessage> dlIE =
deadletterSubscriptionClient.ReceiveBatch(maxToRead);
有一个超时的 ReceiveBatch 过载,但这没有帮助,并且可能只会增加复杂性。
为什么不是每次都获取全部 26 条消息,因为它是在“peek”模式下使用的,并且消息一直在那里。
我可以使用“服务总线资源管理器”来实际验证所有消息是否都在死信队列中并保留在那里。
这主要是一个测试示例,但人们希望“ReceiveBatch”能够在确定性模式下工作,而不是以非常(糟糕)的随机方式工作......