【问题标题】:ApplicationMessageProcessed event is not firing in managed MQTTnet clientApplicationMessageProcessed 事件未在托管 MQTTnet 客户端中触发
【发布时间】:2018-07-10 13:29:47
【问题描述】:

MQTTnet 是一个高性能 .NET 库,用于基于 MQTT 的通信。

这是 GitHub 链接。 https://github.com/chkr1011/MQTTnet 。它提供了一个 MQTT 客户端和一个 MQTT 服务器(代理)。该实现基于来自http://mqtt.org/ 的文档。

这就是我创建managed MQTT 客户端的方式。 链接在这里 https://github.com/chkr1011/MQTTnet/wiki/ManagedClient

    // Setup and start a managed MQTT client.
    var options = new ManagedMqttClientOptionsBuilder()
     .WithAutoReconnectDelay(TimeSpan.FromSeconds(5))
     .WithClientOptions(new MqttClientOptionsBuilder()
     .WithClientId("Client1")
     .WithTcpServer("broker.hivemq.com")
     .WithTls().Build())
     .Build();


    this.mqttClient = new MqttFactory().CreateManagedMqttClient(new MqttNetLogger("IDMQTTManagedPublisher"));
    await this.mqttClient.SubscribeAsync(new TopicFilterBuilder().WithTopic("RequestTopic").Build());
    SubscribeToApplicationMessageReceived();
    await this.mqttClient.StartAsync(options);

订阅ApplicationMessageProcessed活动

  private void SubscribeToApplicationMessageProcessed()
  {
    this.mqttClient.ApplicationMessageProcessed += (s, e) =>
    {


    };
  }

消息发送代码

      var messagePayload = new MqttApplicationMessageBuilder()
        .WithTopic("RequestTopic")
        .WithPayload(message)
        .WithExactlyOnceQoS()
        .WithRetainFlag()
        .Build();

        await mqttClient.PublishAsync(messagePayload);

但是ApplicationMessageProcessed 事件没有在managed MQTTnet client 中触发

【问题讨论】:

  • 更新了问题!

标签: c# mqtt


【解决方案1】:

此托管客户端正在使用内部线程处理消息。所以你必须等待几毫秒才能让线程处理排队的项目。

【讨论】:

    猜你喜欢
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多