3

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

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

我使用 Service Bus Explorer 检查了我的队列是否包含 20 条消息。

此代码仅返回消息结构中的一条消息。我缺少一些财产吗?

4

1 回答 1

0

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

        List<BrokeredMessage> dlIE = new List<BrokeredMessage>();

        BrokeredMessage potentialMessage = null;
        int loopCount = 1; 
        while ((potentialMessage = deadletterSubscriptionClient.Peek(loopCount)) != null) 
        { 
             dlIE.Add(potentialMessage); loopCount++; 
        }
于 2015-03-11T20:45:32.373 回答