Azure Service Bus SDK / NuGet中serverWaitTime和operationTimeout之间的区别

时间:2018-03-30 16:01:48

标签: c# azure azureservicebus azure-servicebus-queues azure-servicebus-topics

我想了解之间的区别:

  1. serverWaitTime(在ISessionClient.AcceptMessageSessionAsync(String,TimeSpan)中)( https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.servicebus.isessionclient.acceptmessagesessionasync?view=azure-dotnet#Microsoft_Azure_ServiceBus_ISessionClient_AcceptMessageSessionAsync_System_String_System_TimeSpan_)和
  2. Azure Service Bus SDK中的operationTimeout(在IMessageReceiver.ReceiveAsync(TimeSpan)中)(https://docs.microsoft.com/en-us/dotnet/api/microsoft.azure.servicebus.core.imessagereceiver.receiveasync?view=azure-dotnet#Microsoft_Azure_ServiceBus_Core_IMessageReceiver_ReceiveAsync_System_TimeSpan_)。
  3. 该文档提供了以下两个文本:

    1. serverWaitTime:呼叫应等待获取下一个会话的时间。
    2. operationTimeout:客户端在超时之前等待接收消息的时间跨度。
    3. 在我的实验代码中,ISessionClient.AcceptMessageSessionAsync(session,serverWaitTime)似乎立即返回(即使正在创建大量会话),其中IMessageReceiver.ReceiveAsync肯定会在超时之前等待提供的operationTimeout,如果消息带有那个会话不可用。

      因此我想知道serverWaitTime是否意味着我不理解的其他内容。

      1. 两者仅与客户端超时相关吗?
      2. 如果这是真的,那么为什么要调用一个serverWaitTime vs operationTimeout?

2 个答案:

答案 0 :(得分:0)

serverWaitTimeoperationTimeout参数都代表相同的概念 - 客户端放弃之前的等待时间。

至于他们被称为不同的原因,这是团队在issue tarcker中被提出的问题。

答案 1 :(得分:0)

会话客户端具有操作超时,让我们可以为所有会话定义超时时间。

通过AcceptMessageSessionAsync的每个单独会话都可以通过提供服务器等待时间来覆盖该值。