首页 > 解决方案 > dotnet mqtt - 听 mqtt 消息 x 分钟

问题描述

目前我正在尝试开发一些可以在 x 分钟内收听 mqtt 消息的东西。我在这个论坛上遇到过的问题之一是我花了 x 分钟时间。但我认为这可能不是一个好方法。

我订阅了这样的活动:

private void MqttBroker_MqttMessagePublishedReceived(object sender, Events.MqttMessageEventArgs e)
{
    _logger?.Information($"MqttBroker_MqttMessagePublishedReceived - message received by the watcher {e}");
    try
    {
        if (e?.Payload != null)
        {
            _messages.AddMessage(e.Payload);
        }
    }
    catch (Exception ex)
    {
        _logger?.Error($"MqttBroker_MqttMessagePublishedReceived - Something went wrong: {ex}");
    }
}

但是在我的主程序(控制台应用程序)中,我订阅了该主题,然后开始录制。基本上只是初始化一个新列表来添加消息。之后,我发布了我的消息,在下一个方法中,我只执行了一个 while 循环 x 分钟。我不喜欢这种方法,我正在寻找更好的方法。使用 thread.sleep 恐怕它会完全阻止我的事件被提出。所以我在考虑一个计时器,但我认为它最终与我的 while 循环相同。

broker.Connect();
broker.Subscribe("config/#");
mqttWatcher.StartRecording(4);
topicHandler.Execute("topic", "json");   // does the publish
var messages= mqttWatcher.StopRecording();
broker.Close();

目前我的停止录制只不过是一个while循环......

var startTime = DateTime.UtcNow;
        while (DateTime.UtcNow - startTime < TimeSpan.FromMinutes(_maxTimeoutInMinutes))
        {
        }

有人知道如何在 x 分钟内使用这些事件吗?提前致谢!!

标签: c#.neteventsmqtt

解决方案


推荐阅读