From e3dfa9d1c0f9adcfd2dd4c10ccae3645ccc80d7b Mon Sep 17 00:00:00 2001 From: lingniu Date: Wed, 1 Jul 2026 02:41:49 +0800 Subject: [PATCH] refactor: remove jt808 mileage state-store switch --- deploy/portainer/docker-compose.yml | 1 - .../operations/jt808-daily-mileage-runbook.md | 1 - .../2026-06-30-kafka-streaming-mileage.md | 1 - .../src/main/resources/application.yml | 1 - .../VehicleAnalyticsAppCompositionTest.java | 1 - .../config/VehicleStatAutoConfiguration.java | 1 - .../config/VehicleStatProperties.java | 9 ------- .../VehicleStatAutoConfigurationTest.java | 26 +++++++++++++++---- 8 files changed, 21 insertions(+), 20 deletions(-) diff --git a/deploy/portainer/docker-compose.yml b/deploy/portainer/docker-compose.yml index f4afde25..6fce99e5 100644 --- a/deploy/portainer/docker-compose.yml +++ b/deploy/portainer/docker-compose.yml @@ -163,7 +163,6 @@ services: VEHICLE_STAT_ENABLED: ${VEHICLE_STAT_ENABLED:-true} VEHICLE_STAT_ZONE_ID: ${VEHICLE_STAT_ZONE_ID:-Asia/Shanghai} VEHICLE_STAT_JT808_MILEAGE_ENABLED: ${VEHICLE_STAT_JT808_MILEAGE_ENABLED:-true} - VEHICLE_STAT_JT808_STATE_STORE: ${VEHICLE_STAT_JT808_STATE_STORE:-redis} VEHICLE_STAT_JT808_STATE_TTL_DAYS: ${VEHICLE_STAT_JT808_STATE_TTL_DAYS:-3} MYSQL_JDBC_URL: ${MYSQL_JDBC_URL:-} MYSQL_USERNAME: ${MYSQL_USERNAME:-} diff --git a/docs/operations/jt808-daily-mileage-runbook.md b/docs/operations/jt808-daily-mileage-runbook.md index 01f9044d..21cf108a 100644 --- a/docs/operations/jt808-daily-mileage-runbook.md +++ b/docs/operations/jt808-daily-mileage-runbook.md @@ -24,7 +24,6 @@ Set these in Portainer or Nacos, without committing secrets: ```text KAFKA_TOPIC_JT808_EVENT=vehicle.event.jt808.v1 VEHICLE_STAT_JT808_MILEAGE_ENABLED=true -VEHICLE_STAT_JT808_STATE_STORE=redis MYSQL_JDBC_URL= MYSQL_USERNAME= MYSQL_PASSWORD= diff --git a/docs/superpowers/plans/2026-06-30-kafka-streaming-mileage.md b/docs/superpowers/plans/2026-06-30-kafka-streaming-mileage.md index 00a271bb..1b1d4f06 100644 --- a/docs/superpowers/plans/2026-06-30-kafka-streaming-mileage.md +++ b/docs/superpowers/plans/2026-06-30-kafka-streaming-mileage.md @@ -29,7 +29,6 @@ KAFKA_TOPIC_JT808_EVENT=vehicle.event.jt808.v1 VEHICLE_STAT_ENABLED=true VEHICLE_STAT_JT808_MILEAGE_ENABLED=true VEHICLE_STAT_REPOSITORY_TYPE=jdbc -VEHICLE_STAT_JT808_STATE_STORE=redis MYSQL_JDBC_URL= MYSQL_USERNAME= MYSQL_PASSWORD= diff --git a/modules/apps/vehicle-analytics-app/src/main/resources/application.yml b/modules/apps/vehicle-analytics-app/src/main/resources/application.yml index 8a380e04..2912af18 100644 --- a/modules/apps/vehicle-analytics-app/src/main/resources/application.yml +++ b/modules/apps/vehicle-analytics-app/src/main/resources/application.yml @@ -81,7 +81,6 @@ lingniu: zone-id: ${VEHICLE_STAT_ZONE_ID:Asia/Shanghai} jt808: enabled: ${VEHICLE_STAT_JT808_MILEAGE_ENABLED:true} - state-store: ${VEHICLE_STAT_JT808_STATE_STORE:redis} redis-key-prefix: ${VEHICLE_STAT_JT808_REDIS_KEY_PREFIX:vehicle:mileage:jt808:daily:} state-ttl-days: ${VEHICLE_STAT_JT808_STATE_TTL_DAYS:3} diff --git a/modules/apps/vehicle-analytics-app/src/test/java/com/lingniu/ingest/analyticsapp/VehicleAnalyticsAppCompositionTest.java b/modules/apps/vehicle-analytics-app/src/test/java/com/lingniu/ingest/analyticsapp/VehicleAnalyticsAppCompositionTest.java index b79ce51f..226e37eb 100644 --- a/modules/apps/vehicle-analytics-app/src/test/java/com/lingniu/ingest/analyticsapp/VehicleAnalyticsAppCompositionTest.java +++ b/modules/apps/vehicle-analytics-app/src/test/java/com/lingniu/ingest/analyticsapp/VehicleAnalyticsAppCompositionTest.java @@ -47,7 +47,6 @@ class VehicleAnalyticsAppCompositionTest { "lingniu.ingest.vehicle-state.enabled=false", "lingniu.ingest.vehicle-stat.enabled=true", "lingniu.ingest.vehicle-stat.jt808.enabled=true", - "lingniu.ingest.vehicle-stat.jt808.state-store=redis", "lingniu.ingest.event-file-store.enabled=false", "lingniu.ingest.event-history.enabled=false", "lingniu.ingest.gb32960.enabled=false") diff --git a/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/config/VehicleStatAutoConfiguration.java b/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/config/VehicleStatAutoConfiguration.java index f22ef8b4..58149aaf 100644 --- a/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/config/VehicleStatAutoConfiguration.java +++ b/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/config/VehicleStatAutoConfiguration.java @@ -52,7 +52,6 @@ public class VehicleStatAutoConfiguration { @Bean @ConditionalOnBean({StringRedisTemplate.class, ObjectMapper.class}) @ConditionalOnProperty(prefix = "lingniu.ingest.vehicle-stat.jt808", name = "enabled", havingValue = "true") - @ConditionalOnProperty(prefix = "lingniu.ingest.vehicle-stat.jt808", name = "state-store", havingValue = "redis") @ConditionalOnMissingBean(Jt808MileageStateStore.class) public Jt808MileageStateStore redisJt808MileageStateStore(StringRedisTemplate redis, ObjectMapper objectMapper, diff --git a/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/config/VehicleStatProperties.java b/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/config/VehicleStatProperties.java index f6cb40d7..d87c8f41 100644 --- a/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/config/VehicleStatProperties.java +++ b/modules/services/vehicle-stat-service/src/main/java/com/lingniu/ingest/vehiclestat/config/VehicleStatProperties.java @@ -28,7 +28,6 @@ public class VehicleStatProperties { public static class Jt808 { private boolean enabled; - private String stateStore = "redis"; private String redisKeyPrefix = "vehicle:mileage:jt808:daily:"; private long stateTtlDays = 3; @@ -40,14 +39,6 @@ public class VehicleStatProperties { this.enabled = enabled; } - public String getStateStore() { - return stateStore; - } - - public void setStateStore(String stateStore) { - this.stateStore = stateStore; - } - public String getRedisKeyPrefix() { return redisKeyPrefix; } diff --git a/modules/services/vehicle-stat-service/src/test/java/com/lingniu/ingest/vehiclestat/config/VehicleStatAutoConfigurationTest.java b/modules/services/vehicle-stat-service/src/test/java/com/lingniu/ingest/vehiclestat/config/VehicleStatAutoConfigurationTest.java index 9b598772..22c14f21 100644 --- a/modules/services/vehicle-stat-service/src/test/java/com/lingniu/ingest/vehiclestat/config/VehicleStatAutoConfigurationTest.java +++ b/modules/services/vehicle-stat-service/src/test/java/com/lingniu/ingest/vehiclestat/config/VehicleStatAutoConfigurationTest.java @@ -71,8 +71,7 @@ class VehicleStatAutoConfigurationTest { .withBean(ObjectMapper.class, ObjectMapper::new) .withPropertyValues( "lingniu.ingest.vehicle-stat.enabled=true", - "lingniu.ingest.vehicle-stat.jt808.enabled=true", - "lingniu.ingest.vehicle-stat.jt808.state-store=redis") + "lingniu.ingest.vehicle-stat.jt808.enabled=true") .run(context -> { assertThat(context).hasSingleBean(Jt808MileageStateStore.class); assertThat(context).hasSingleBean(RedisJt808MileageStateStore.class); @@ -82,6 +81,24 @@ class VehicleStatAutoConfigurationTest { }); } + @Test + void ignoresLegacyStateStorePropertyAndUsesRedisWhenAvailable() { + contextRunner + .withBean(JdbcTemplate.class, () -> mock(JdbcTemplate.class)) + .withBean(StringRedisTemplate.class, () -> mock(StringRedisTemplate.class)) + .withBean(ObjectMapper.class, ObjectMapper::new) + .withPropertyValues( + "lingniu.ingest.vehicle-stat.enabled=true", + "lingniu.ingest.vehicle-stat.jt808.enabled=true", + "lingniu.ingest.vehicle-stat.jt808.state-store=memory") + .run(context -> { + assertThat(context).hasSingleBean(Jt808MileageStateStore.class); + assertThat(context).hasSingleBean(RedisJt808MileageStateStore.class); + assertThat(context).hasSingleBean(Jt808MileageStreamProcessor.class); + assertThat(context).hasSingleBean(VehicleStatEnvelopeIngestor.class); + }); + } + @Test void doesNotFallbackToMemoryJt808StateStoreWhenRedisIsDefaultButMissing() { contextRunner @@ -97,7 +114,7 @@ class VehicleStatAutoConfigurationTest { } @Test - void doesNotCreateJt808MileageBeansWhenMemoryStateStoreIsSelected() { + void doesNotCreateJt808MileageBeansWhenRedisIsMissingEvenWithLegacyStateStoreProperty() { contextRunner .withBean(JdbcTemplate.class, () -> mock(JdbcTemplate.class)) .withPropertyValues( @@ -127,8 +144,7 @@ class VehicleStatAutoConfigurationTest { .withBean(ObjectMapper.class, ObjectMapper::new) .withPropertyValues( "lingniu.ingest.vehicle-stat.enabled=true", - "lingniu.ingest.vehicle-stat.jt808.enabled=true", - "lingniu.ingest.vehicle-stat.jt808.state-store=redis") + "lingniu.ingest.vehicle-stat.jt808.enabled=true") .run(context -> { assertThat(context).hasSingleBean(JdbcTemplate.class); assertThat(context).hasSingleBean(JdbcVehicleStatMetricRepository.class);