首页 > 解决方案 > 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>

标签: c#asp.net.net-core

解决方案


推荐阅读