C# 在';Microsoft.Azure.Devices.Client';消费互联网?

C# 在';Microsoft.Azure.Devices.Client';消费互联网?,c#,azure,azure-iot-hub,C#,Azure,Azure Iot Hub,我正在物联网设备上使用Azure SDK。我所依赖的方法之一是 public Task<Message> ReceiveAsync(); 在这个班下 public sealed class DeviceClient : IDisposable 我在while循环中连续调用这个方法,如下所示 while (true) { var receivedMessage = await _deviceClient.ReceiveAsyn

我正在物联网设备上使用Azure SDK。我所依赖的方法之一是

public Task<Message> ReceiveAsync();
在这个班下

public sealed class DeviceClient : IDisposable
我在while循环中连续调用这个方法,如下所示

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

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

我的问题是:即使
receivedMessage
始终显示空值,这是否会占用internet配额?

在源代码中,您会发现三个处理程序:

  • HttpTransportHandler
  • MqttTransportHandler
  • AmqpTransportHandler
使用哪一个取决于您的配置。HTTP one将根据
ReceiveAsync()
发出GET请求,从而消耗网络流量

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


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

通过源代码挖掘,您将发现三个处理程序:

  • HttpTransportHandler
  • MqttTransportHandler
  • AmqpTransportHandler
使用哪一个取决于您的配置。HTTP one将根据
ReceiveAsync()
发出GET请求,从而消耗网络流量

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


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

完美,如何轻松衡量每一个消费量?完美,如何轻松衡量每一个消费量?
        while (true)
        {
            var receivedMessage = await _deviceClient.ReceiveAsync(TimeSpan.FromSeconds(3)).ConfigureAwait(false);

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