Azure Service Bus ReceiveBatch返回0条消息

时间:2015-07-27 13:45:59

标签: c# azure azureservicebus

我的主题订阅中有超过1000条消息。

当我呼叫接收时,我按预期收到消息。 当我调用ReceiveBatch时,我收到0条消息。

问题是什么?

MessagingFactory factory = MessagingFactory.CreateFromConnectionString(Config.ServiceBusTopicConnectionString);
var path = SubscriptionClient.FormatSubscriptionPath(topicPath, subscriptionName);
var receiver = factory.CreateMessageReceiver(path, ReceiveMode.PeekLock);

var messages = receiver.ReceiveBatch(50); //This returns 0 messages
//var message = receiver.Receive(); //This returns 1 message as expected

1 个答案:

答案 0 :(得分:0)

您是否已启用主题批处理?

来自https://msdn.microsoft.com/en-us/library/azure/hh528527.aspx

在启用批量存储访问的所有实体之间进行批处理。 创建新队列,主题或订阅时,默认情况下会启用批量存储访问。要禁用批量存储访问,请在创建实体之前将EnableBatchedOperations属性设置为false。例如:

C#

QueueDescription qd = new QueueDescription();
qd.EnableBatchedOperations = false;
Queue q = namespaceManager.CreateQueue(qd);

批量存储访问不会影响可计费消息传递操作的数量,并且是队列,主题或订阅的属性。它独立于接收模式和客户端与Service Bus服务之间使用的协议。