C# 在什么情况下SubscriptionClient.GetMessageAsync的结果可以为空?
我正在将Azure service bus代理与WindowsAzure.ServiceBus Nuget包版本3.4.4一起使用 当我调用与未发布消息的订阅连接的C# 在什么情况下SubscriptionClient.GetMessageAsync的结果可以为空?,c#,azure,servicebus,C#,Azure,Servicebus,我正在将Azure service bus代理与WindowsAzure.ServiceBus Nuget包版本3.4.4一起使用 当我调用与未发布消息的订阅连接的SubscriptionClient时,返回的任务在大约一分钟后完成,结果为null 我希望任务永远不会在null 在什么条件下,此方法返回的任务可以使用null完成?您可以将时间跨度传递给ReceiveAsync,以指定您希望等待消息的时间长度。默认情况下,它可能是一分钟 如果你希望每两周至少收到一条信息,你可以这样做: clie
SubscriptionClient
时,返回的任务在大约一分钟后完成,结果为null
我希望任务永远不会在null
在什么条件下,此方法返回的任务可以使用
null
完成?您可以将时间跨度传递给ReceiveAsync
,以指定您希望等待消息的时间长度。默认情况下,它可能是一分钟
如果你希望每两周至少收到一条信息,你可以这样做:
client.ReceiveAsync(TimeSpan.FromDays(14));
您正在使用的API假定您希望轮询服务总线以获取消息;这意味着您必须定期调用服务总线端点才能接受消息。没有消息时,您将收到空响应。我不建议调用client.ReceiveAsync(TimeSpan.FromDays(14)
,因为这将使单个请求在该时间段内保持打开状态。相反,空结果是预期行为,您应该在连续循环中调用ReceiveAsync
但是,还有一个API可以为您执行此循环:OnMessage
只需确保程序的主线程不退出。没有
GetMessageAsync
。您已链接到ReceiveAsync
,其中在其文档部分包含了null
可能被返回的原因。因此不清楚这里的问题是什么。感谢@Damien\u我确实指的是ReceiveAsync
,但是我在它的文档中没有看到任何关于null
的内容好吧,我也有点误读了文档-它自己的文档只是说它是一个异步接收。但是,如果你看receive
的文档,它记录了它可以返回null
的情况。所以把2+2一起…啊,谢谢@Damien_这个不信的人!我从没想过API会这样工作!