gpt4 book ai didi

c# - 'Microsoft.Azure.Devices.Client'中的ReceiveAsync方法是否消耗互联网?

转载 作者:行者123 更新时间:2023-12-03 05:42:09 26 4
gpt4 key购买 nike

我在 IoT 设备上使用 Azure SDK。我依赖的方法之一是

public Task<Message> ReceiveAsync();

出现在此命名空间中

namespace Microsoft.Azure.Devices.Client

在这个类下

public sealed class DeviceClient : IDisposable

我在 while 循环内连续调用此方法,如下所示

        while (true)
{
var receivedMessage = await _deviceClient.ReceiveAsync(TimeSpan.FromSeconds(3)).ConfigureAwait(false);

if (receivedMessage != null)
{
//Do staff
}
}

我的问题是:即使 receivedMessage 始终显示 null,这是否会消耗互联网配额?

最佳答案

深入研究源代码,您会发现三个处理程序:

  • HttpTransportHandler
  • MqttTransportHandler
  • AmqpTransportHandler

使用哪一个取决于您的配置。 HTTP 将针对每个 ReceiveAsync() 发出 GET 请求,从而消耗网络流量。

MQTT 处理程序在 TCP 或 WebSocket 上运行,其中可能涉及保活流量。但由于这种通信是双向的,因此发生的大多数流量都涉及正在传递的实际消息。 ReceiveAsync() 只是从内部接收队列获取第一条消息(如果有),或者等待一条消息到达,它不会轮询。

AMPQ 处理程序也在消息队列上运行,我不太清楚 ReceiveAsync() 是否最终会产生网络流量。

关于c# - 'Microsoft.Azure.Devices.Client'中的ReceiveAsync方法是否消耗互联网?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57864603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com