我将Azure服务总线代理与WindowsAzure.ServiceBus Nuget软件包版本3.4.4一起使用
当我在与未发布消息的订阅相关联的SubscriptionClient
上调用ReceiveAsync
时,返回的任务在一分钟左右后会以null
结果完成。< / p>
我预计任务永远不会以null
此方法返回的任务在什么条件下可以使用null
完成?
答案 0 :(得分:0)
您可以将TimeSpan传递给ReceiveAsync
,以指定您希望等待邮件的时间。默认情况下,它可能只需一分钟。
如果您希望每两周至少收到一条消息,那么您可以这样做:
client.ReceiveAsync(TimeSpan.FromDays(14));
答案 1 :(得分:0)
您正在使用的API假设您要在服务总线上查询消息;这意味着您必须定期调用Service Bus端点才能接受消息。如果没有消息,您将收到空响应。我不建议调用client.ReceiveAsync(TimeSpan.FromDays(14)
,因为这会在一段时间内打开一个请求。相反,null结果是预期的行为,您应该在连续循环中调用ReceiveAsync
。
但是,还有一个API可以为您执行此循环:OnMessage
只需确保程序的主线程不会退出。