c# - MessageReceiver.ReceiveBatch() 未按预期工作

标签 c# .net azure servicebus azure-servicebus-queues

我正在尝试使用 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 条消息。

此代码仅返回消息结构中的一条消息。我是否缺少某些属性(property)?

最佳答案

这只是部分答案或解决方法;以下代码可靠地获取所有元素,但不使用“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++; 
        }

关于c# - MessageReceiver.ReceiveBatch() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26862747/

相关文章:

c# - 如何在考虑到 Web 和移动应用程序的情况下进行桌面应用程序开发?

c# - 发布到 ReCAPTCHA

.net - Google Cloud 和 Google.Cloud.Functions.Framework

.net - F# 作为 HPC 语言

Azure 表存储 - GUID 变空

azure - 使用 Azure 管理个人 OneDrive 帐户

.net - C#/.NET : How do I create a DNS record in an Azure DNS zone using the new ARM SDK?

c# - 如何使用 Monotouch 对话框显示 UIPickerView?

c# - Xamarin iOS WebException : App crashes after HttpWebRequest is complete

c# - 为 .Net 平台编写 DSL