From 80a6fb69921c3e665046b679e331440b63283957 Mon Sep 17 00:00:00 2001
From: Yunfei Du <278774021@qq.com>
Date: Tue, 25 Jun 2024 13:11:51 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BA=8B=E4=BB=B6:=E5=AE=9E=E6=97=B6=E6=95=B0?=
=?UTF-8?q?=E6=8D=AE+=E6=95=85=E9=9A=9C=E6=8A=A5=E8=AD=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 38 +++
.idea/.gitignore | 8 +
.idea/encodings.xml | 8 +
.idea/inspectionProfiles/Project_Default.xml | 5 +
.idea/misc.xml | 14 +
.idea/vcs.xml | 6 +
pom.xml | 162 +++++++++++
.../eventdriven/EventDrivenApplication.java | 15 +
.../muyu/eventdriven/EventDrivenRunner.java | 151 ++++++++++
.../config/CaffeineCacheConfig.java | 28 ++
.../eventdriven/config/EventDrivenConfig.java | 12 +
.../eventdriven/config/EventDrivenRunner.java | 20 ++
.../config/caffeine/CaffeineCacheConfig.java | 29 ++
.../config/iotdb/IotDBSessionConfig.java | 189 +++++++++++++
.../config/rabbit/RabbitRoutingConfig.java | 51 ++++
.../config/redis/RedisListenerConfig.java | 22 ++
.../muyu/eventdriven/constants/Constants.java | 134 +++++++++
.../constants/FaultCodeConstants.java | 27 ++
.../eventdriven/constants/HttpStatus.java | 93 +++++++
.../constants/RabbitConstants.java | 15 +
.../eventdriven/constants/RedisConstants.java | 12 +
.../eventdriven/consumer/KafkaConsumers.java | 49 ++++
.../redis/RedisKeyExpirationListener.java | 54 ++++
.../controller/EventInfoController.java | 33 +++
.../controller/IotDbController.java | 63 +++++
.../eventdriven/domain/AsVehicleEvent.java | 22 ++
.../muyu/eventdriven/domain/EventInfo.java | 22 ++
.../domain/EventTacticsManage.java | 33 +++
.../muyu/eventdriven/domain/EventType.java | 21 ++
.../muyu/eventdriven/domain/RabbitFalut.java | 19 ++
.../muyu/eventdriven/domain/VehicleData.java | 261 ++++++++++++++++++
.../domain/VehicleFaultStatus.java | 23 ++
.../muyu/eventdriven/domain/VehicleKafka.java | 19 ++
.../muyu/eventdriven/domain/rest/Result.java | 112 ++++++++
.../listener/RedisExpirationListener.java | 48 ++++
.../listener/VinConsumerRunner.java | 111 ++++++++
.../eventdriven/mapper/EventDrivenMapper.java | 14 +
.../eventdriven/model/param/IotDbParam.java | 41 +++
.../eventdriven/model/result/IotDbResult.java | 34 +++
.../response/ErrorResponseData.java | 78 ++++++
.../eventdriven/response/ResponseData.java | 215 +++++++++++++++
.../response/SuccessResponseData.java | 29 ++
.../eventdriven/server/EventInfoService.java | 15 +
.../muyu/eventdriven/server/IotDbServer.java | 24 ++
.../server/impl/EventInfoServiceImpl.java | 127 +++++++++
.../server/impl/IotDbServerImpl.java | 111 ++++++++
.../eventdriven/tactics/EventTactics.java | 16 ++
.../tactics/basics/StorageEvent.java | 48 ++++
.../tactics/system/ElectronicFenceEvent.java | 37 +++
.../tactics/system/FaultAlarmEvent.java | 149 ++++++++++
.../tactics/system/IndexWarningEvent.java | 28 ++
.../tactics/system/RealTimeDataEvent.java | 44 +++
...ot.autoconfigure.AutoConfiguration.imports | 1 +
src/main/resources/application.yml | 51 ++++
.../resources/mapper/EventDrivenMapper.xml | 5 +
55 files changed, 2996 insertions(+)
create mode 100644 .gitignore
create mode 100644 .idea/.gitignore
create mode 100644 .idea/encodings.xml
create mode 100644 .idea/inspectionProfiles/Project_Default.xml
create mode 100644 .idea/misc.xml
create mode 100644 .idea/vcs.xml
create mode 100644 pom.xml
create mode 100644 src/main/java/com/muyu/eventdriven/EventDrivenApplication.java
create mode 100644 src/main/java/com/muyu/eventdriven/EventDrivenRunner.java
create mode 100644 src/main/java/com/muyu/eventdriven/config/CaffeineCacheConfig.java
create mode 100644 src/main/java/com/muyu/eventdriven/config/EventDrivenConfig.java
create mode 100644 src/main/java/com/muyu/eventdriven/config/EventDrivenRunner.java
create mode 100644 src/main/java/com/muyu/eventdriven/config/caffeine/CaffeineCacheConfig.java
create mode 100644 src/main/java/com/muyu/eventdriven/config/iotdb/IotDBSessionConfig.java
create mode 100644 src/main/java/com/muyu/eventdriven/config/rabbit/RabbitRoutingConfig.java
create mode 100644 src/main/java/com/muyu/eventdriven/config/redis/RedisListenerConfig.java
create mode 100644 src/main/java/com/muyu/eventdriven/constants/Constants.java
create mode 100644 src/main/java/com/muyu/eventdriven/constants/FaultCodeConstants.java
create mode 100644 src/main/java/com/muyu/eventdriven/constants/HttpStatus.java
create mode 100644 src/main/java/com/muyu/eventdriven/constants/RabbitConstants.java
create mode 100644 src/main/java/com/muyu/eventdriven/constants/RedisConstants.java
create mode 100644 src/main/java/com/muyu/eventdriven/consumer/KafkaConsumers.java
create mode 100644 src/main/java/com/muyu/eventdriven/consumer/redis/RedisKeyExpirationListener.java
create mode 100644 src/main/java/com/muyu/eventdriven/controller/EventInfoController.java
create mode 100644 src/main/java/com/muyu/eventdriven/controller/IotDbController.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/AsVehicleEvent.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/EventInfo.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/EventTacticsManage.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/EventType.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/RabbitFalut.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/VehicleData.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/VehicleFaultStatus.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/VehicleKafka.java
create mode 100644 src/main/java/com/muyu/eventdriven/domain/rest/Result.java
create mode 100644 src/main/java/com/muyu/eventdriven/listener/RedisExpirationListener.java
create mode 100644 src/main/java/com/muyu/eventdriven/listener/VinConsumerRunner.java
create mode 100644 src/main/java/com/muyu/eventdriven/mapper/EventDrivenMapper.java
create mode 100644 src/main/java/com/muyu/eventdriven/model/param/IotDbParam.java
create mode 100644 src/main/java/com/muyu/eventdriven/model/result/IotDbResult.java
create mode 100644 src/main/java/com/muyu/eventdriven/response/ErrorResponseData.java
create mode 100644 src/main/java/com/muyu/eventdriven/response/ResponseData.java
create mode 100644 src/main/java/com/muyu/eventdriven/response/SuccessResponseData.java
create mode 100644 src/main/java/com/muyu/eventdriven/server/EventInfoService.java
create mode 100644 src/main/java/com/muyu/eventdriven/server/IotDbServer.java
create mode 100644 src/main/java/com/muyu/eventdriven/server/impl/EventInfoServiceImpl.java
create mode 100644 src/main/java/com/muyu/eventdriven/server/impl/IotDbServerImpl.java
create mode 100644 src/main/java/com/muyu/eventdriven/tactics/EventTactics.java
create mode 100644 src/main/java/com/muyu/eventdriven/tactics/basics/StorageEvent.java
create mode 100644 src/main/java/com/muyu/eventdriven/tactics/system/ElectronicFenceEvent.java
create mode 100644 src/main/java/com/muyu/eventdriven/tactics/system/FaultAlarmEvent.java
create mode 100644 src/main/java/com/muyu/eventdriven/tactics/system/IndexWarningEvent.java
create mode 100644 src/main/java/com/muyu/eventdriven/tactics/system/RealTimeDataEvent.java
create mode 100644 src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
create mode 100644 src/main/resources/application.yml
create mode 100644 src/main/resources/mapper/EventDrivenMapper.xml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..63574ec
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..8d66637
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..82dbec8
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..9faf85d
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,162 @@
+
+
+ 4.0.0
+
+ com.muyu
+ event
+ 1.0-SNAPSHOT
+ 事件驱动系统
+
+
+ 17
+ 17
+ UTF-8
+ 2.3.7.RELEASE
+
+
+
+ com.alibaba.fastjson2
+ fastjson2
+ 2.0.47
+
+
+ org.springframework.amqp
+ spring-rabbit-test
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-amqp
+
+
+
+ com.github.ben-manes.caffeine
+ caffeine
+ 2.9.3
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ org.apache.kafka
+ kafka-clients
+ 3.3.0
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis
+
+
+
+
+ mysql
+ mysql-connector-java
+
+
+
+ org.mybatis.spring.boot
+ mybatis-spring-boot-starter
+ 2.2.2
+
+
+
+ org.apache.iotdb
+ iotdb-session
+ 0.14.0-preview1
+
+
+
+ cn.hutool
+ hutool-all
+ 5.6.3
+
+
+
+ com.alibaba
+ fastjson
+ 1.2.83
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.22
+ true
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ 1.8
+ 1.8
+ UTF-8
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.3.7.RELEASE
+
+ com.zhouhong.iotdbdemo.IotdbDemoApplication
+
+
+
+ repackage
+
+ repackage
+
+
+
+
+
+
+
diff --git a/src/main/java/com/muyu/eventdriven/EventDrivenApplication.java b/src/main/java/com/muyu/eventdriven/EventDrivenApplication.java
new file mode 100644
index 0000000..e395388
--- /dev/null
+++ b/src/main/java/com/muyu/eventdriven/EventDrivenApplication.java
@@ -0,0 +1,15 @@
+package com.muyu.eventdriven;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cache.annotation.EnableCaching;
+
+@SpringBootApplication
+@EnableCaching
+public class EventDrivenApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(EventDrivenApplication.class, args);
+ }
+
+}
diff --git a/src/main/java/com/muyu/eventdriven/EventDrivenRunner.java b/src/main/java/com/muyu/eventdriven/EventDrivenRunner.java
new file mode 100644
index 0000000..5421441
--- /dev/null
+++ b/src/main/java/com/muyu/eventdriven/EventDrivenRunner.java
@@ -0,0 +1,151 @@
+package com.muyu.eventdriven;
+
+import com.alibaba.fastjson.JSON;
+import com.muyu.eventdriven.domain.VehicleData;
+import com.muyu.eventdriven.server.EventInfoService;
+import com.muyu.eventdriven.server.impl.EventInfoServiceImpl;
+import com.muyu.eventdriven.tactics.EventTactics;
+import lombok.extern.log4j.Log4j2;
+import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.apache.kafka.clients.consumer.ConsumerRecords;
+import org.apache.kafka.clients.consumer.KafkaConsumer;
+import org.apache.kafka.common.TopicPartition;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.context.ApplicationContext;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Properties;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+
+/**
+ * @ClassName EventDriveenApplication
+ * @Description 描述
+ * @Author YunFei.Du
+ * @Date 2024/6/25 10:03
+ */
+
+@Log4j2
+@Component
+public class EventDrivenRunner implements ApplicationRunner {
+ @Autowired
+ private EventInfoServiceImpl eventInfoService;
+ @Autowired
+ private RedisTemplate< String, String > redisTemplate;
+
+ @Autowired
+ private ApplicationContext applicationContext;
+ @Autowired
+ private EventTactics eventTactics;
+ private final AtomicInteger start = new AtomicInteger();
+
+ private static List classNameList = new ArrayList<>((Arrays.asList(
+ "StorageEvent",
+ "ElectronicFenceEvent",
+ "FaultAlarmEvent",
+ "RealTimeDataEvent",
+ "IndexWarningEvent")));
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ if (start.get() != 0) {
+ return;
+ }
+ synchronized (this) {
+ if (start.get() != 0) {
+ return;
+ }
+ start.set(1);
+
+ // kafka分区监听器
+ new Thread(() -> {
+ ArrayList< TopicPartition > topicPartitions = new ArrayList<>();
+// List< String > topics = redisTemplate.opsForList ( ).range ( "ipList", 0, -1 ).stream ().distinct ().collect( Collectors.toList());
+ List topics = new ArrayList ( ){{
+ add ( "47.92.213.100" );
+ add ( "47.92.95.98" );
+ }};
+ for (String topic : topics) {
+ for (int i = 0; i < 8; i++) {
+ TopicPartition topicPartition = new TopicPartition(topic, i);
+ topicPartitions.add(topicPartition);
+ }
+ }
+ Properties props = new Properties(){{
+ put("bootstrap.servers", "43.142.12.243:9092");
+ put("auto.commit.interval.ms", "1000");
+ put("group.id", "test");
+ put("enable.auto.commit", "true");
+ put("session.timeout.ms", "30000");
+ put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
+ put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
+ }};
+ KafkaConsumer consumer = new KafkaConsumer<>(props);
+ consumer.assign(topicPartitions);
+ try {
+ while (true) {
+ ConcurrentHashMap< String, ArrayList< VehicleData > > stringListHashMap = new ConcurrentHashMap<>();
+ ConsumerRecords records = consumer.poll(Duration.ofMillis(100));
+ ConcurrentHashMap< String, ArrayList< VehicleData > > map = new ConcurrentHashMap<> ( );
+ stringListHashMap= eventInfoService.getVehicleData(records, map);
+ if (!records.isEmpty()) {
+ ArrayList< VehicleData > vehicleData1 = new ArrayList<> ( );
+ ConcurrentHashMap< String, ArrayList< VehicleData > > finalStringListHashMap = stringListHashMap;
+ new Thread(() -> {
+ for (TopicPartition partition : records.partitions()) {
+ String value="";
+ String key1="";
+
+ List< ConsumerRecord > partitionRecords = records.records(partition);
+ for (ConsumerRecord record : partitionRecords) {
+ key1=record.key ( );
+ log.info("Offset = {}, Key = {}, Value = {}", record.offset(), key1, record.value());
+ value= record.value ( );
+ System.out.println (value );
+ VehicleData vehicleData = JSON.parseObject ( value, VehicleData.class );
+ vehicleData1.add ( vehicleData );
+// VehicleData vehicle = kafkaConsumerListenerExample.getVehicle(record.value());
+// VehicleEvent events = eventsService.getEvents(vehicle.getVin());
+// HandlerHelper.doHandler(events, vehicle, redisService);
+ }
+ // 处理拉取到的消息,将消息按车辆事件类型分类
+
+ finalStringListHashMap.forEach((key, value1) -> {
+ // 从 Redis 中获取车辆事件处理类的列表
+// String vehicleEventString = redisTemplate.opsForHash().get(RedisConstants.VEHICLE_EVENT, key).toString();
+ String vehicleEventString = "1,2,3,4,5";
+ for (String str : vehicleEventString.split(",")) {
+ CompletableFuture.runAsync(() -> {
+ applicationContext.getBean(classNameList.get(Integer.parseInt(str)), EventTactics.class).eventManage(key,value1);
+ });
+ }
+ });
+
+ }
+ }).start();
+
+ } else {
+ Thread.sleep(10);
+ }
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ log.error("Consumer was interrupted.", e);
+ } finally {
+ consumer.close();
+ }
+ }).start();
+ }
+ }
+}
diff --git a/src/main/java/com/muyu/eventdriven/config/CaffeineCacheConfig.java b/src/main/java/com/muyu/eventdriven/config/CaffeineCacheConfig.java
new file mode 100644
index 0000000..25d1fe9
--- /dev/null
+++ b/src/main/java/com/muyu/eventdriven/config/CaffeineCacheConfig.java
@@ -0,0 +1,28 @@
+package com.muyu.eventdriven.config;
+
+import com.github.benmanes.caffeine.cache.Cache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import org.springframework.context.annotation.Bean;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @ClassName CaffeineCacheConfig
+ * @Description 描述
+ * @Author YunFei.Du
+ * @Date 2024/6/25 11:41
+ */
+
+public class CaffeineCacheConfig {
+ @Bean
+ public Cache caffeineCache() {
+ return Caffeine.newBuilder()
+ // 设置最后一次写入或访问后经过固定时间过期
+ .expireAfterWrite(5, TimeUnit.SECONDS)
+ // 初始的缓存空间大小
+ .initialCapacity(100)
+ // 缓存的最大条数
+ .maximumSize(1000)
+ .build();
+ }
+}
diff --git a/src/main/java/com/muyu/eventdriven/config/EventDrivenConfig.java b/src/main/java/com/muyu/eventdriven/config/EventDrivenConfig.java
new file mode 100644
index 0000000..ea60070
--- /dev/null
+++ b/src/main/java/com/muyu/eventdriven/config/EventDrivenConfig.java
@@ -0,0 +1,12 @@
+package com.muyu.eventdriven.config;
+
+/**
+ * @ClassName DataAccessClientConfig
+ * @Description 描述
+ * @Author Yunfei.Du
+ * @Date 2024/5/9 19:52
+ */
+//@ComponentScan
+//@Import({EventDrivenRunner.class})
+//public class EventDrivenConfig {
+//}
diff --git a/src/main/java/com/muyu/eventdriven/config/EventDrivenRunner.java b/src/main/java/com/muyu/eventdriven/config/EventDrivenRunner.java
new file mode 100644
index 0000000..1ccd25c
--- /dev/null
+++ b/src/main/java/com/muyu/eventdriven/config/EventDrivenRunner.java
@@ -0,0 +1,20 @@
+package com.muyu.eventdriven.config;
+
+
+/**
+ * @ClassName DataAccessClientRunner
+ * @Description 描述
+ * @Author Yunfei.Du
+ * @Date 2024/5/9 19:53
+ */
+//@Log4j2
+//@Component
+//public class EventDrivenRunner implements ApplicationRunner {
+// @Autowired
+// private EventTacticsManage eventTacticsManage;
+//
+// @Override
+// public void run(ApplicationArguments args){
+// eventTacticsManage.initEventTacticsManage();
+// }
+//}
diff --git a/src/main/java/com/muyu/eventdriven/config/caffeine/CaffeineCacheConfig.java b/src/main/java/com/muyu/eventdriven/config/caffeine/CaffeineCacheConfig.java
new file mode 100644
index 0000000..66c872d
--- /dev/null
+++ b/src/main/java/com/muyu/eventdriven/config/caffeine/CaffeineCacheConfig.java
@@ -0,0 +1,29 @@
+package com.muyu.eventdriven.config.caffeine;
+
+import com.github.benmanes.caffeine.cache.Cache;
+import com.github.benmanes.caffeine.cache.Caffeine;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @ClassName CaffeineCacheConfig
+ * @Description 本地缓存配置类
+ * @Author Yunfei.Du
+ * @Date 2024/6/21 上午9:39
+ */
+@Configuration
+public class CaffeineCacheConfig {
+ @Bean
+ public Cache caffeineCache() {
+ return Caffeine.newBuilder()
+ // 设置最后一次写入或访问后经过固定时间过期
+ .expireAfterWrite(5, TimeUnit.SECONDS)
+ // 初始的缓存空间大小
+ .initialCapacity(100)
+ // 缓存的最大条数
+ .maximumSize(1000)
+ .build();
+ }
+}
diff --git a/src/main/java/com/muyu/eventdriven/config/iotdb/IotDBSessionConfig.java b/src/main/java/com/muyu/eventdriven/config/iotdb/IotDBSessionConfig.java
new file mode 100644
index 0000000..a29df97
--- /dev/null
+++ b/src/main/java/com/muyu/eventdriven/config/iotdb/IotDBSessionConfig.java
@@ -0,0 +1,189 @@
+package com.muyu.eventdriven.config.iotdb;
+
+import lombok.extern.log4j.Log4j2;
+import org.apache.iotdb.rpc.IoTDBConnectionException;
+import org.apache.iotdb.rpc.StatementExecutionException;
+import org.apache.iotdb.session.Session;
+import org.apache.iotdb.session.SessionDataSet;
+import org.apache.iotdb.session.util.Version;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.write.record.Tablet;
+import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.stereotype.Component;
+
+import java.rmi.ServerException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName AsVehicleEvent
+ * @Description iotdb配置工具类
+ * @Author Yunfei.Du
+ * @Date 2024/6/16 下午3:29
+ */
+@Log4j2
+@Component
+@Configuration
+public class IotDBSessionConfig {
+
+ private static Session session;
+
+ @Value("${spring.iotdb.ip}")
+ private String LOCAL_HOST ;
+ @Bean
+ public Session getSession() throws IoTDBConnectionException, StatementExecutionException {
+ if (session == null) {
+ log.info("正在连接iotdb.......");
+ session = new Session.Builder().host(LOCAL_HOST).port(6667).username("root").password("root").version(Version.V_0_13).build();
+ session.open(false);
+ session.setFetchSize(100);
+ log.info("iotdb连接成功~");
+ // 设置时区
+ session.setTimeZone("+08:00");
+ }
+ return session;
+ }
+
+ /**
+ * description: 带有数据类型的添加操作 - insertRecord没有指定类型
+ * author: zhouhong
+ * @param * @param deviceId:节点路径如:root.a1eaKSRpRty.CA3013A303A25467
+ * time:时间戳
+ * measurementsList:物理量 即:属性
+ * type:数据类型: BOOLEAN((byte)0), INT32((byte)1),INT64((byte)2),FLOAT((byte)3),DOUBLE((byte)4),TEXT((byte)5),VECTOR((byte)6);
+ * valuesList:属性值 --- 属性必须与属性值一一对应
+ * @return
+ */
+ public void insertRecordType(String deviceId, Long time,List measurementsList, TSDataType type,List