首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ApplicationMessageProcessed事件不在托管MQTTnet客户端中触发。

ApplicationMessageProcessed事件不在托管MQTTnet客户端中触发。
EN

Stack Overflow用户
提问于 2018-07-10 13:29:47
回答 1查看 1.8K关注 0票数 0

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

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

我就是这样创建managed MQTT客户机的。这是链接https://github.com/chkr1011/MQTTnet/wiki/ManagedClient

代码语言:javascript
复制
    // 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事件

代码语言:javascript
复制
  private void SubscribeToApplicationMessageProcessed()
  {
    this.mqttClient.ApplicationMessageProcessed += (s, e) =>
    {


    };
  }

消息发送代码

代码语言:javascript
复制
      var messagePayload = new MqttApplicationMessageBuilder()
        .WithTopic("RequestTopic")
        .WithPayload(message)
        .WithExactlyOnceQoS()
        .WithRetainFlag()
        .Build();

        await mqttClient.PublishAsync(messagePayload);

但是ApplicationMessageProcessed事件不是在managed MQTTnet client中触发的

EN

回答 1

Stack Overflow用户

发布于 2019-07-05 20:23:51

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51266609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档