public override async Task OnMqttDataChanged(EnumQueueMode mode, BoxMqttApplicationMessage applicationMessage) { try { // 如果是删除的触发事件,则不需处理 if (mode == EnumQueueMode.Dequeue) { return; } // 将获取到的数据进行转换为监听数据,然后推送到kafka var messageStr = Encoding.UTF8.GetString(applicationMessage.Payload); var monitorData = JsonSerializer.Deserialize <FBoxMonitorDataDto>(messageStr); var dmonDataConsumerOutputs = monitorData.FBoxMonitorDataInfos.Select(data => new KafkaMonitorDataOutput { State = data.Value == null || string.IsNullOrWhiteSpace(data.Value.ToString()) ? 1 : 0, DmonName = data.Name, Value = data.Value, TimeStamp = monitorData.Time, BoxBo = applicationMessage.BoxNo, MqttName = MqttServerType.FBoxMqtt }).ToArray(); await _kafkaProducerManager.PushDataAsync(_kafkaSetting.MonitorDataTopic, applicationMessage.BoxNo, dmonDataConsumerOutputs); // 去除当前消费掉的元素 _messageQueueManager.Dequeue(applicationMessage.TopicName); } catch (Exception e) { _logger.LogError(e.Message); } }
public override Task OnMqttDataChanged(EnumQueueMode mode, BoxMqttApplicationMessage applicationMessage) { throw new System.NotImplementedException(); }
/// <summary> /// 消息处理者 /// </summary> /// <param name="action"> /// 当前消息来源方式 /// </param> /// <param name="applicationMessage"></param> /// <returns></returns> public abstract Task OnMqttDataChanged(EnumQueueMode mode, BoxMqttApplicationMessage applicationMessage);