代码之家  ›  专栏  ›  技术社区  ›  kudlatiger

当mqttnet服务器不运行时,publishAsync不会失败。

  •  0
  • kudlatiger  · 技术社区  · 6 年前

    我正在使用.NET库mqtt net,从下面的链接进行基于mqtt的通信。

    https://github.com/chkr1011/MQTTnet

    我正在使用 managed MQTT Client 从下方链接

    https://github.com/chkr1011/MQTTnet/wiki/ManagedClient

    我有以下代码 publish 消息发送至 MQTT server .

     var messagePayload = new MqttApplicationMessageBuilder()
                                          .WithTopic("Topic1")
                                          .WithPayload(message)
                                          .WithExactlyOnceQoS()
                                          .WithRetainFlag()
                                          .Build();
    
        try
        {
              await mqttClient.PublishAsync(messagePayload);                  
        }
        catch (Exception ex)
        {
             //Why I am not getting exception? 
        }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   IUnknown    6 年前

    这种行为是通过设计MQTT托管客户机实现的。它使用一个内部队列。在处发布的所有消息都已添加到此队列,并在服务器可用时发送到服务器。 它还确保消息不会丢失,即使应用程序重新启动,也可以重新发送。引用项目wiki。

    所有MQTT应用程序消息都将添加到内部队列中,并在服务器可用时进行处理。 可以存储所有MQTT应用程序消息,以支持在应用程序重新启动后发送它们。