From 3fb93c6ca8bd5487ac900c3434824f421e024986 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Wed, 25 Aug 2021 11:57:55 +0800 Subject: [PATCH] screen-common 修复日志工具类BUG --- screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 158 insertions(+), 14 deletions(-) diff --git a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java index af6c8cc..04e47cb 100644 --- a/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java +++ b/screen-manage/src/main/java/com/moral/api/kafka/consumer/KafkaConsumer.java @@ -1,37 +1,181 @@ package com.moral.api.kafka.consumer; -import com.moral.api.constant.TopicConstants; import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.support.Acknowledgment; import org.springframework.stereotype.Component; +import org.springframework.util.ObjectUtils; -import java.util.Random; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import com.alibaba.fastjson.JSON; +import com.moral.api.service.DeviceService; +import com.moral.api.service.HistoryHourlyService; +import com.moral.api.service.HistoryMinutelyService; +import com.moral.api.service.HistorySecondSpecialService; +import com.moral.constant.KafkaConstants; +import com.moral.constant.RedisConstants; + +/* + * ������������������ + * */ @Component @Slf4j public class KafkaConsumer { -/* *//** - * ��������������������������������� - * @param record - * @param ack - * @throws Exception - *//* - @KafkaListener(topics = TopicConstants.TEST_TOPIC_MESSAGE,groupId = "test") - public void listenTest(ConsumerRecord<String, String> record , Acknowledgment ack) throws Exception { + @Autowired + private HistoryMinutelyService historyMinutelyService; + + @Autowired + private HistoryHourlyService historyHourlyService; + + @Autowired + private DeviceService deviceService; + + @Autowired + private RedisTemplate redisTemplate; + + @Autowired + private HistorySecondSpecialService historySecondSpecialService; + + //������������ + @KafkaListener(topics = KafkaConstants.TOPIC_MINUTE, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory") + public void listenMinute(ConsumerRecord<String, String> record, Acknowledgment ack) { String msg = record.value(); - System.out.println(msg); - if (new Random().nextInt(100)<50){ - log.info(String.format("kafka ������������������---------------- listen1 topic = %s, offset = %d, value = %s ", record.topic(), record.offset(), record.value())); + try { + Map<String, Object> data = JSON.parseObject(msg, Map.class); + Object mac = data.get("mac"); + Object time = data.get("DataTime"); + Object ver = data.get("ver"); + if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) { + log.warn("some properties is null, param{}", msg); + ack.acknowledge(); + return; + } + + //������������ + data.remove("time"); + data.remove("entryTime"); + Iterator<Map.Entry<String, Object>> iterator = data.entrySet().iterator(); + Map<String, Object> newMap = new HashMap<>(); + Map.Entry<String, Object> next; + while (iterator.hasNext()) { + next = iterator.next(); + String key = next.getKey(); + Object value = next.getValue(); + if (key.contains("-Avg")) { + newMap.put(key.replaceAll("-Avg", ""), Double.parseDouble(value.toString())); + } else { + newMap.put(key, value); + } + iterator.remove(); + } + //��������������� + historyMinutelyService.insertHistoryMinutely(newMap); ack.acknowledge(); + } catch (Exception e) { + log.error("param{}" + msg); } + } - }*/ + //������������ + @KafkaListener(topics = KafkaConstants.TOPIC_HOUR, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory") + public void listenHour(ConsumerRecord<String, String> record, Acknowledgment ack) { + String msg = record.value(); + try { + Map<String, Object> data = JSON.parseObject(msg, Map.class); + Object mac = data.get("mac"); + Object time = data.get("DataTime"); + Object ver = data.get("ver"); + if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) { + log.warn("some properties is null, param{}", msg); + ack.acknowledge(); + return; + } + //������������ + data.remove("time"); + data.remove("entryTime"); + Iterator<Map.Entry<String, Object>> iterator = data.entrySet().iterator(); + Map<String, Object> newMap = new HashMap<>(); + Map.Entry<String, Object> next; + while (iterator.hasNext()) { + next = iterator.next(); + String key = next.getKey(); + Object value = next.getValue(); + if (key.contains("-Avg")) { + newMap.put(key.replaceAll("-Avg", ""), Double.parseDouble(value.toString())); + } else { + newMap.put(key, value); + } + iterator.remove(); + } + //��������������� + historyHourlyService.insertHistoryHourly(newMap); + ack.acknowledge(); + } catch (Exception e) { + log.error("param{}" + msg); + } + } + //������������������������������������������������������ + @KafkaListener(topics = KafkaConstants.TOPIC_SECOND, groupId = KafkaConstants.GROUP_STATE, containerFactory = "kafkaListenerContainerFactory") + public void listenSecond(ConsumerRecord<String, String> record) { + String msg = record.value(); + try { + Map<String, Object> data = JSON.parseObject(msg, Map.class); + Object mac = data.get("mac"); + Object time = data.get("DataTime"); + Object ver = data.get("ver"); + if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) { + log.warn("some properties is null, param{}", msg); + return; + } + //������������ + data.remove("time"); + data.remove("entryTime"); + data.remove("ver"); + //������������ + data = deviceService.adjustDeviceData(data); + //������redis + redisTemplate.opsForHash().put(RedisConstants.DATA_SECOND, mac, data); + //��������������������������� + deviceService.judgeDeviceState(data); + } catch (Exception e) { + log.error("param{}" + msg); + } + } + //��������������������� + @KafkaListener(topics = KafkaConstants.TOPIC_SECOND_SPECIAL, groupId = KafkaConstants.GROUP_INSERT, containerFactory = "kafkaListenerContainerFactory") + public void listenSecondSpecial(ConsumerRecord<String, String> record, Acknowledgment ack) { + String msg = record.value(); + try { + Map<String, Object> data = JSON.parseObject(msg, Map.class); + Object mac = data.get("mac"); + Object time = data.get("DataTime"); + Object ver = data.get("ver"); + if (ObjectUtils.isEmpty(ver) || ObjectUtils.isEmpty(time) || ObjectUtils.isEmpty(mac)) { + log.warn("some properties is null, param{}", msg); + ack.acknowledge(); + return; + } + //������������ + data.remove("time"); + data.remove("entryTime"); + data.remove("ver"); + + historySecondSpecialService.insertHistorySecond(data); + ack.acknowledge(); + } catch (Exception e) { + log.error("param{}" + msg); + } + } } -- Gitblit v1.8.0