Azure 服务总线 ReceiveBatch 返回 0 条消息
Azure Service Bus ReceiveBatch returning 0 messages
我的主题订阅中有超过 1000 条消息。
当我调用 Receive 时,我收到了预期的消息。
当我调用 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
您是否启用了该主题的批处理?
来自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);
批量存储访问不影响计费消息操作的数量,并且是 属性 队列、主题或订阅。它独立于客户端和服务总线服务之间使用的接收模式和协议。
我的主题订阅中有超过 1000 条消息。
当我调用 Receive 时,我收到了预期的消息。 当我调用 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
您是否启用了该主题的批处理?
来自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);
批量存储访问不影响计费消息操作的数量,并且是 属性 队列、主题或订阅。它独立于客户端和服务总线服务之间使用的接收模式和协议。