我具有每1分钟触发一次的天蓝色功能。该函数创建像这样的MessageReceiver
var messageReceiver = new MessageReceiver(serviceBusConnectionString, entityPath, ReceiveMode.PeekLock, null, 0);
订阅的锁定持续时间为1分钟。 然后,它尝试从订阅中获取多达100条消息,如下所示:
var allMessages = new List<Message>();
Message message;
do {
message = await messageReceiver.ReceiveAsync(TimeSpan.FromSeconds(2));
if (message != null) allMessages.Add(message);
} while (message != null && allMessages.Count() < 100);
使用messageReceiver.CompleteAsync
完成消息处理后,使用messageReceiver.CloseAsync()
关闭messageReceiver。
函数第一次运行时,它从订阅中最多获取100条消息,但是在下次运行时,无论订阅中可用的消息数为多少,它都仅提取0或1条消息(Service Bus Explorer显示那里> 10订阅中的邮件)。因此,即使有可用消息,ReceiveAsync似乎也返回null。
增加ReceiveAsync的超时时间似乎无济于事。
当有可用消息时,为什么ReceiveAsync返回null?
答案 0 :(得分:0)
我找到了解决方案或解决方法。如果我将服务总线主题更改为不允许分区(它需要删除该主题并再次创建),则在有可用消息时,ReceiveAsync总是返回一条消息。
有关