我用npm安装了iothub-explorer(据我所知)。从一开始,我就注意到在第一次出现消息之前开始后有一个显着的时间延迟(几秒钟到一分钟以上)。它几乎每次都会发生,但如果我没有长时间运行或重新启动计算机,则会更频繁,更严重。 在第一次延迟之后,自启动iothub-eplorer以来已发送的所有消息都以批量形式到达,并且下一条消息实时显示。 问题是,如果我不能依赖iothub-explorer(向我显示收到的消息),我就无法在我的设备上测试程序。
我正在使用Ubuntu 16.04,我的nodejs版本是v4.2.6,npm版本是3.5.2,我的itohub-explorer版本是1.1.12。
因为我对nodejs不熟悉,并且不知道哪些信息是相关的,所以请在必要时请求其他信息。
更新: 我从低级API更改为普通API(后台有线程)。现在它似乎工作得很好,消息按时到达。但是,在此之前,IOTHUB_CLIENT_CONFIRMATION_OK确认在设备上发送消息后很快就会到达,尽管iothub-explorer中的消息已经延迟。
答案 0 :(得分:0)
它是按设计的,因为它同时从serval事件中心分区接收。为此,您可以查看source code。
有一种解决方法可以使用事件中心。然后你可以发送到一个指定的分区:
CreatePartitionedSender(partition)
仅从此分区收到:
eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow)
请注意,azure iot hub和事件中心接近实时。