c# - 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 分钟内使用这些事件吗?提前致谢!!
解决方案
推荐阅读
- hibernate - “With”子句不适用于父属性 - hql 连接条件
- python - Python脚本循环文件并使用请求调用api然后将结果存储到文本文件
- java - 突然 java.lang.NoClassDefFoundError: java.io.IOException 没有对应用程序进行任何更改
- apache-kafka - Kafka 流在应用程序启动后不久就卡在消费上
- sql - SQLite:带有 COUNT 子查询的 UPDATE 语句
- node.js - nodejs:将ansi char发送到arduino
- excel - VBA使用循环将值复制到其他工作表
- typescript - 使用一些地图根据输入对象创建新对象实例
- regex - 替换正则表达式中的嵌套反向引用
- design-patterns - 什么时候提高程序内聚会恶化耦合?