c# - Worker 服务,如何让 MQTT 事件订阅不中断?
问题描述
MQTT客户端作为windows系统的后台服务程序,初始化:
public Worker(ILogger<Worker> logger,IMqttDataService mqttDataService)
{
_logger = logger;
_mqttDataService = mqttDataService;
Task.Run(async () =>
{
await _mqttDataService.Initialize();
});
}
在这个初始化函数中,在ReceivedHandler之后,获取数据:</p>
_client.UseApplicationMessageReceivedHandler(e =>
{
MqttMessageTransport mmt = new MqttMessageTransport
{
Topic = e.ApplicationMessage.Topic,
Message = Encoding.UTF8.GetString(e.ApplicationMessage.Payload)
};
});
但是,工作服务程序启动后,只能在开始时获取数据。初始化完成后,无法再次激活UseApplicationMessageReceivedHandler事件,但在控制台程序中,就OK了。</p>
解决方案
推荐阅读
- rxjs - RxJS 鼠标活动跟踪
- java - 当代理关闭时,Kafka Streams 停止侦听主题并处理消息
- ms-access - 当后端为共享点列表时,与多个用户共享 ms 访问前端文件
- matlab - 在 MATLAB 中生成具有已知 PDF 表达式的随机变量
- reactjs - How to intercept message from Chatbot in a React component ? (Microsoft botframework-webchat)
- python - SSD和SSD Lite有什么区别??(Tensorflow)
- c - 矩阵的第一个索引被忽略
- python-3.x - 通过 EC2 进行 S3 身份验证,无需在代码或存储中传递 AWS 访问密钥和密钥
- javascript - 通过单击图像将文本插入输入字段
- swift - 只有一个 Swift 按钮 = 致命错误:在展开可选值时意外发现 nil