MessageReceiver.ReceiveBatch()未按预期工作

本文关键字:工作 ReceiveBatch MessageReceiver | 更新日期: 2023-09-27 18:30:02

我正在尝试使用MessageReceiver:中的ReceiveBatch方法从ServiceBus批量接收消息

IEnumerable<BrokeredMessage> messages;
var messagingfactory = MessagingFactory.CreateFromConnectionString("ConnectionString");
var msgrcvr = messagingfactory.CreateMessageReceiver("queueName", ReceiveMode.ReceiveAndDelete);
messages = msgrcvr.ReceiveBatch(20, timeoutInSecs);

我已经使用服务总线资源管理器检查了我的队列是否包含20条消息。

此代码只返回消息结构中的一条消息。我有什么财产不见了吗?

MessageReceiver.ReceiveBatch()未按预期工作

这只是部分答案或解决方法;以下代码可靠地获取所有元素,但不使用"ReceiveBatch";注意,据我所知,Peek(I)是在一个基于一的索引上操作的。此外:根据运行的服务器,如果您被消息拉取收费,这可能(也可能不会)更贵,因此使用风险自负:

        List<BrokeredMessage> dlIE = new List<BrokeredMessage>();
        BrokeredMessage potentialMessage = null;
        int loopCount = 1; 
        while ((potentialMessage = deadletterSubscriptionClient.Peek(loopCount)) != null) 
        { 
             dlIE.Add(potentialMessage); loopCount++; 
        }