我的主题订阅中有超过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
答案 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服务之间使用的协议。