From 7304e99fceddf2b2b247dce2a3d23e18f1b03cd2 Mon Sep 17 00:00:00 2001 From: "2248356998 qq.com" <2248356998@qq.com> Date: Fri, 12 May 2023 18:22:06 +0800 Subject: [PATCH] =?UTF-8?q?mqttClient=E5=90=8C=E6=AD=A5=E9=97=B4=E9=9A=94?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E7=9A=84=E5=AE=9E=E4=BD=93=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Plugins/ThingsGateway.Mqtt/MqttClient.cs | 53 +++++++++++--------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/src/Plugins/ThingsGateway.Mqtt/MqttClient.cs b/src/Plugins/ThingsGateway.Mqtt/MqttClient.cs index 24e6ec1c8..20e199295 100644 --- a/src/Plugins/ThingsGateway.Mqtt/MqttClient.cs +++ b/src/Plugins/ThingsGateway.Mqtt/MqttClient.cs @@ -77,7 +77,8 @@ public class MqttClient : UpLoadBase private ConcurrentQueue CollectVariableRunTimes = new(); private MqttClientProperty driverPropertys = new(); - private TimerTick exTimerTick; + private TimerTick exVariableTimerTick; + private TimerTick exDeviceTimerTick; private EasyLock lockobj = new(); private MqttClientVariableProperty variablePropertys = new(); @@ -167,11 +168,11 @@ public class MqttClient : UpLoadBase } else { - if (exTimerTick.IsTickHappen()) + if (exVariableTimerTick.IsTickHappen()) { try { - var varList = _uploadVariables; + var varList = _uploadVariables.Adapt>(); if (varList?.Count != 0) { //分解List,避免超出mqtt字节大小限制 @@ -257,35 +258,38 @@ public class MqttClient : UpLoadBase else { - var devList = _collectDevice; - if (devList?.Count != 0) + if (exDeviceTimerTick.IsTickHappen()) { - //分解List,避免超出mqtt字节大小限制 - var devData = devList.ChunkTrivialBetter(500); - foreach (var item in devData) + var devList = _collectDevice.Adapt>(); ; + if (devList?.Count != 0) { - try + //分解List,避免超出mqtt字节大小限制 + var devData = devList.ChunkTrivialBetter(500); + foreach (var item in devData) { - if (!cancellationToken.IsCancellationRequested) + try { - var variableMessage = new MqttApplicationMessageBuilder() - .WithTopic($"{driverPropertys.DeviceTopic}") - .WithPayload(item.GetSciptListValue(driverPropertys.BigTextScriptDeviceModel)).Build(); - var isConnect = await TryMqttClientAsync(); - if (isConnect.IsSuccess) - await _mqttClient.PublishAsync(variableMessage); + if (!cancellationToken.IsCancellationRequested) + { + var variableMessage = new MqttApplicationMessageBuilder() + .WithTopic($"{driverPropertys.DeviceTopic}") + .WithPayload(item.GetSciptListValue(driverPropertys.BigTextScriptDeviceModel)).Build(); + var isConnect = await TryMqttClientAsync(); + if (isConnect.IsSuccess) + await _mqttClient.PublishAsync(variableMessage); + } + else + { + break; + } } - else + catch (Exception ex) { - break; + _logger.LogWarning(ex, ToString()); } } - catch (Exception ex) - { - _logger.LogWarning(ex, ToString()); - } - } + } } @@ -386,7 +390,8 @@ public class MqttClient : UpLoadBase } if (driverPropertys.UploadInterval <= 1000) driverPropertys.UploadInterval = 1000; - exTimerTick = new(driverPropertys.UploadInterval); + exVariableTimerTick = new(driverPropertys.UploadInterval); + exDeviceTimerTick = new(driverPropertys.UploadInterval); } private async Task _mqttClient_ApplicationMessageReceivedAsync(MqttApplicationMessageReceivedEventArgs arg)