Mqttnet ManagedMqttClient 处理与接收的应用程序消息

问题描述 投票:0回答:1

我最近尝试使用 mqttnet 包在 C# 中实现 mqttclient。 我意识到,库可以调用三个事件:

ApplicationMessageProcessedAsync
ApplicationMessageReceivedAsync
ApplicationMessageSkippedAsync

虽然最后两个是不言自明的,但我很难理解 ApplicationMessage 在接收后会在哪些方面进行处理。因此问题是:为什么

ApplicationMessageProcessedAsync
存在。另外,在什么情况下客户端可能会决定跳过 ApplicationMessage,这是否也与消息的处理有关?

我很乐意获得任何帮助,因为 MqttNet 包中的文档相当不存在。

谢谢J

c# mqtt mqttnet
1个回答
0
投票

您在这里混淆了接收和发送。当从代理收到消息时会调用

ApplicationMessageProcessedAsync
,而另外两个则与发布消息相关。

MqttNet ManagedClient 内部有一个队列,它实际上从队列中发布消息。如果您调用

EnqueueAsync(message)
,但您的队列已满,则会调用
ApplicationMessageSkippedAsync
事件,以告诉您队列溢出的情况。然后消息就不会发送。

另一方面,

ApplicationMessageProcessedAsync
在发布消息时被调用。根据 QoS 级别的不同,调用的时间略有不同。当发布消息失败时也会调用此事件。在这种情况下,它包含更多信息的例外情况。

© www.soinside.com 2019 - 2024. All rights reserved.