当前正在使用Azure Service Bus主题,并遇到使用ReceiveBatch方法接收我的消息的问题。问题是预期结果实际上不是我得到的结果。这是基本的代码设置,使用案例如下:
SubscriptionClient client = SubscriptionClient.CreateFromConnectionString(connectionString, convoTopic, subName);
IEnumerable<BrokeredMessage> messageList = client.ReceiveBatch(100);
foreach (BrokeredMessage message in messageList)
{
try
{
Console.WriteLine(message.GetBody<string>() + message.MessageId);
message.Complete();
}
catch (Exception ex)
{
message.Abandon();
}
}
client.Close();
MessageBox.Show("Done");
IEnumerable<BrokeredMessage> messageList = client.ReceiveBatch(100, new Timespan(0,0,0));
,则问题2消失了,因为问题1仍然存在,我必须两次调用代码才能获取所有消息。 我假设问题#2是由于默认超时值导致的,而我在#3中将其覆盖(尽管我发现这令人困惑,如果有一条消息,它会立即响应而无需等待默认时间)。我不确定为什么我永远不会在单个ReceiveBatch中收到全部消息。
最佳答案
我让ReceiveBatch()正常工作的方法是做两件事。
SubscriptionDescription sd = new SubscriptionDescription(topicName, orgSubName);sd.EnableBatchedOperations = true;
完成这两件事后,我可以使用
IEnumerable<BrokeredMessage> messageList = client.ReceiveBatch(100, new TimeSpan(0,0,0));
使主题按预期工作关于c# - Azure Service Bus ReceiveBatch()的奇怪行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31949698/