diff --git a/deploy/local/launchctl/com.lingniu.gb32960.plist.template b/deploy/local/launchctl/com.lingniu.gb32960.plist.template
index 0c3a4734..4504950b 100644
--- a/deploy/local/launchctl/com.lingniu.gb32960.plist.template
+++ b/deploy/local/launchctl/com.lingniu.gb32960.plist.template
@@ -36,8 +36,6 @@
vehicle.dlq.gb32960.v1
SINK_ARCHIVE_PATH
__SHARED_ARCHIVE_PATH__
- VEHICLE_IDENTITY_STORE
- mysql
VEHICLE_IDENTITY_MYSQL_TABLE
vehicle_identity_binding
VEHICLE_IDENTITY_MYSQL_JDBC_URL
diff --git a/deploy/local/launchctl/com.lingniu.jt808.plist.template b/deploy/local/launchctl/com.lingniu.jt808.plist.template
index 48cba65e..d99af421 100644
--- a/deploy/local/launchctl/com.lingniu.jt808.plist.template
+++ b/deploy/local/launchctl/com.lingniu.jt808.plist.template
@@ -32,8 +32,6 @@
vehicle.dlq.jt808.v1
SINK_ARCHIVE_PATH
__SHARED_ARCHIVE_PATH__
- VEHICLE_IDENTITY_STORE
- mysql
VEHICLE_IDENTITY_MYSQL_TABLE
vehicle_identity_binding
VEHICLE_IDENTITY_MYSQL_JDBC_URL
diff --git a/deploy/local/launchctl/com.lingniu.yutong-mqtt.plist.template b/deploy/local/launchctl/com.lingniu.yutong-mqtt.plist.template
index 3c72f914..25197fdd 100644
--- a/deploy/local/launchctl/com.lingniu.yutong-mqtt.plist.template
+++ b/deploy/local/launchctl/com.lingniu.yutong-mqtt.plist.template
@@ -62,8 +62,6 @@
vehicle.dlq.mqtt-yutong.v1
SINK_ARCHIVE_PATH
__SHARED_ARCHIVE_PATH__
- VEHICLE_IDENTITY_STORE
- mysql
VEHICLE_IDENTITY_MYSQL_TABLE
vehicle_identity_binding
VEHICLE_IDENTITY_MYSQL_JDBC_URL
diff --git a/deploy/portainer/docker-compose.yml b/deploy/portainer/docker-compose.yml
index 9e83e11b..3e9e3daa 100644
--- a/deploy/portainer/docker-compose.yml
+++ b/deploy/portainer/docker-compose.yml
@@ -34,7 +34,6 @@ x-common-env: &common-env
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-}
x-identity-mysql-env: &identity-mysql-env
- VEHICLE_IDENTITY_STORE: ${VEHICLE_IDENTITY_STORE:-mysql}
VEHICLE_IDENTITY_MYSQL_JDBC_URL: ${MYSQL_JDBC_URL:-}
VEHICLE_IDENTITY_MYSQL_USERNAME: ${MYSQL_USERNAME:-}
VEHICLE_IDENTITY_MYSQL_PASSWORD: ${MYSQL_PASSWORD:-}
diff --git a/docs/operations/vehicle-ingest-tdengine-verification.md b/docs/operations/vehicle-ingest-tdengine-verification.md
index 768f4d29..0f0613b1 100644
--- a/docs/operations/vehicle-ingest-tdengine-verification.md
+++ b/docs/operations/vehicle-ingest-tdengine-verification.md
@@ -162,8 +162,8 @@ deploy/local/launchctl/
JT808 注册身份绑定:
-- 生产默认使用 `VEHICLE_IDENTITY_STORE=mysql`,不再使用 file/memory 作为运行时身份绑定仓储。
-- 生产需要把 0x0100 注册信息维护到 MySQL 时,设置 `VEHICLE_IDENTITY_STORE=mysql`。
+- 生产身份绑定固定使用 MySQL,不再提供 file/memory/sqlite 运行时切换入口。
+- 生产需要把 0x0100 注册信息维护到 MySQL 时,只需要配置 `VEHICLE_IDENTITY_MYSQL_*` 连接参数。
- 需要提供 `VEHICLE_IDENTITY_MYSQL_JDBC_URL`、`VEHICLE_IDENTITY_MYSQL_USERNAME`、`VEHICLE_IDENTITY_MYSQL_PASSWORD`。
- 服务启动时自动创建 `vehicle_identity_binding` 和 `vehicle_identity_binding_registration` 两张表。`vehicle_identity_binding` 只维护 `plate`、`vin` 两列;`vehicle_identity_binding_registration` 按 `protocol + phone` 保存 JT808 0x0100 注册字段。
- 注册帧无真实 VIN 时也会写入 registration 表,`vin` 默认为 `unknown`。外部系统识别车辆后只需要维护车牌和 VIN,例如:`INSERT INTO vehicle_identity_binding (plate, vin) VALUES ('沪A61559F', 'LNVIN000000000001') ON DUPLICATE KEY UPDATE vin = VALUES(vin);`
diff --git a/modules/apps/gb32960-ingest-app/src/main/resources/application.yml b/modules/apps/gb32960-ingest-app/src/main/resources/application.yml
index bdd9ec9e..9a2614c5 100644
--- a/modules/apps/gb32960-ingest-app/src/main/resources/application.yml
+++ b/modules/apps/gb32960-ingest-app/src/main/resources/application.yml
@@ -91,7 +91,7 @@ lingniu:
store: redis
ttl: ${SESSION_TTL:30m}
identity:
- store: ${VEHICLE_IDENTITY_STORE:mysql}
+ store: mysql
mysql:
jdbc-url: ${VEHICLE_IDENTITY_MYSQL_JDBC_URL:jdbc:mysql://127.0.0.1:3306/lingniu_vehicle?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai}
username: ${VEHICLE_IDENTITY_MYSQL_USERNAME:root}
diff --git a/modules/apps/gb32960-ingest-app/src/test/java/com/lingniu/ingest/gb32960app/Gb32960IngestAppDefaultsTest.java b/modules/apps/gb32960-ingest-app/src/test/java/com/lingniu/ingest/gb32960app/Gb32960IngestAppDefaultsTest.java
index f51e0a26..bb70c433 100644
--- a/modules/apps/gb32960-ingest-app/src/test/java/com/lingniu/ingest/gb32960app/Gb32960IngestAppDefaultsTest.java
+++ b/modules/apps/gb32960-ingest-app/src/test/java/com/lingniu/ingest/gb32960app/Gb32960IngestAppDefaultsTest.java
@@ -47,7 +47,7 @@ class Gb32960IngestAppDefaultsTest {
.containsEntry("lingniu.ingest.sink.archive.enabled", "${SINK_ARCHIVE_ENABLED:true}")
.containsEntry("lingniu.ingest.sink.archive.path", "${SINK_ARCHIVE_PATH:./archive/}")
.containsEntry("lingniu.ingest.session.store", "redis")
- .containsEntry("lingniu.ingest.identity.store", "${VEHICLE_IDENTITY_STORE:mysql}")
+ .containsEntry("lingniu.ingest.identity.store", "mysql")
.containsEntry("lingniu.ingest.identity.mysql.table-name",
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
.containsEntry("management.endpoints.web.exposure.include",
@@ -68,7 +68,8 @@ class Gb32960IngestAppDefaultsTest {
assertThat(applicationYaml())
.contains("password: ${GB32960_PLATFORM_PWD_HYUNDAI:}")
.contains("password: ${GB32960_PLATFORM_PWD_YUEJIN:}")
- .doesNotContain("SESSION_STORE");
+ .doesNotContain("SESSION_STORE")
+ .doesNotContain("VEHICLE_IDENTITY_STORE");
}
private static Properties applicationProperties() {
diff --git a/modules/apps/jt808-ingest-app/src/main/resources/application.yml b/modules/apps/jt808-ingest-app/src/main/resources/application.yml
index 26942867..963af7ad 100644
--- a/modules/apps/jt808-ingest-app/src/main/resources/application.yml
+++ b/modules/apps/jt808-ingest-app/src/main/resources/application.yml
@@ -55,7 +55,7 @@ lingniu:
store: redis
ttl: ${SESSION_TTL:30m}
identity:
- store: ${VEHICLE_IDENTITY_STORE:mysql}
+ store: mysql
mysql:
jdbc-url: ${VEHICLE_IDENTITY_MYSQL_JDBC_URL:jdbc:mysql://127.0.0.1:3306/lingniu_vehicle?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai}
username: ${VEHICLE_IDENTITY_MYSQL_USERNAME:root}
diff --git a/modules/apps/jt808-ingest-app/src/test/java/com/lingniu/ingest/jt808app/Jt808IngestAppDefaultsTest.java b/modules/apps/jt808-ingest-app/src/test/java/com/lingniu/ingest/jt808app/Jt808IngestAppDefaultsTest.java
index a26e48a5..8d8069e0 100644
--- a/modules/apps/jt808-ingest-app/src/test/java/com/lingniu/ingest/jt808app/Jt808IngestAppDefaultsTest.java
+++ b/modules/apps/jt808-ingest-app/src/test/java/com/lingniu/ingest/jt808app/Jt808IngestAppDefaultsTest.java
@@ -34,7 +34,7 @@ class Jt808IngestAppDefaultsTest {
.containsEntry("lingniu.ingest.sink.kafka.topics.raw-archive", "${KAFKA_TOPIC_JT808_RAW:vehicle.raw.jt808.v1}")
.containsEntry("lingniu.ingest.sink.kafka.topics.dlq", "${KAFKA_TOPIC_JT808_DLQ:vehicle.dlq.jt808.v1}")
.containsEntry("lingniu.ingest.session.store", "redis")
- .containsEntry("lingniu.ingest.identity.store", "${VEHICLE_IDENTITY_STORE:mysql}")
+ .containsEntry("lingniu.ingest.identity.store", "mysql")
.containsEntry("lingniu.ingest.identity.mysql.table-name",
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
.containsEntry("lingniu.ingest.identity.mysql.jdbc-url",
@@ -55,7 +55,8 @@ class Jt808IngestAppDefaultsTest {
.doesNotContain("event-file-store:")
.doesNotContain("vehicle-state:")
.doesNotContain("vehicle-stat:")
- .doesNotContain("SESSION_STORE");
+ .doesNotContain("SESSION_STORE")
+ .doesNotContain("VEHICLE_IDENTITY_STORE");
}
private static Properties applicationProperties() {
diff --git a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java
index d92fa52e..93baed7d 100644
--- a/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java
+++ b/modules/apps/vehicle-history-app/src/test/java/com/lingniu/ingest/historyapp/PortainerComposeResourceLimitsTest.java
@@ -561,7 +561,8 @@ class PortainerComposeResourceLimitsTest {
assertThat(compose)
.contains("x-identity-mysql-env: &identity-mysql-env")
- .contains("x-redis-session-env: &redis-session-env");
+ .contains("x-redis-session-env: &redis-session-env")
+ .doesNotContain("VEHICLE_IDENTITY_STORE");
assertThat(gb32960Service)
.contains("- *identity-mysql-env")
.contains("- *redis-session-env");
@@ -630,7 +631,8 @@ class PortainerComposeResourceLimitsTest {
.contains("HTTP_PORT\n " + httpPort + "")
.contains("NACOS_CONFIG_ENABLED\n false")
.contains("MANAGEMENT_HEALTH_REDIS_ENABLED\n false")
- .contains("/tmp/lingniu-" + serviceName + "-live/");
+ .contains("/tmp/lingniu-" + serviceName + "-live/")
+ .doesNotContain("VEHICLE_IDENTITY_STORE");
}
private static String serviceBlock(String compose, String serviceName) {
diff --git a/modules/apps/yutong-mqtt-app/src/main/resources/application.yml b/modules/apps/yutong-mqtt-app/src/main/resources/application.yml
index b98bee8c..c1c95eed 100644
--- a/modules/apps/yutong-mqtt-app/src/main/resources/application.yml
+++ b/modules/apps/yutong-mqtt-app/src/main/resources/application.yml
@@ -61,7 +61,7 @@ lingniu:
rate-limit:
per-vin-qps: 50
identity:
- store: ${VEHICLE_IDENTITY_STORE:mysql}
+ store: mysql
mysql:
jdbc-url: ${VEHICLE_IDENTITY_MYSQL_JDBC_URL:jdbc:mysql://127.0.0.1:3306/lingniu_vehicle?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai}
username: ${VEHICLE_IDENTITY_MYSQL_USERNAME:root}
diff --git a/modules/apps/yutong-mqtt-app/src/test/java/com/lingniu/ingest/yutongmqttapp/YutongMqttAppDefaultsTest.java b/modules/apps/yutong-mqtt-app/src/test/java/com/lingniu/ingest/yutongmqttapp/YutongMqttAppDefaultsTest.java
index 8c521dc7..8118922a 100644
--- a/modules/apps/yutong-mqtt-app/src/test/java/com/lingniu/ingest/yutongmqttapp/YutongMqttAppDefaultsTest.java
+++ b/modules/apps/yutong-mqtt-app/src/test/java/com/lingniu/ingest/yutongmqttapp/YutongMqttAppDefaultsTest.java
@@ -33,7 +33,7 @@ class YutongMqttAppDefaultsTest {
.containsEntry("lingniu.ingest.sink.kafka.topics.realtime", "${KAFKA_TOPIC_YUTONG_MQTT_EVENT:vehicle.event.mqtt-yutong.v1}")
.containsEntry("lingniu.ingest.sink.kafka.topics.raw-archive", "${KAFKA_TOPIC_YUTONG_MQTT_RAW:vehicle.raw.mqtt-yutong.v1}")
.containsEntry("lingniu.ingest.sink.kafka.topics.dlq", "${KAFKA_TOPIC_YUTONG_MQTT_DLQ:vehicle.dlq.mqtt-yutong.v1}")
- .containsEntry("lingniu.ingest.identity.store", "${VEHICLE_IDENTITY_STORE:mysql}")
+ .containsEntry("lingniu.ingest.identity.store", "mysql")
.containsEntry("lingniu.ingest.identity.mysql.table-name",
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
.containsEntry("lingniu.ingest.sink.archive.enabled", "${SINK_ARCHIVE_ENABLED:true}")
@@ -48,7 +48,8 @@ class YutongMqttAppDefaultsTest {
.doesNotContain("event-history:")
.doesNotContain("event-file-store:")
.doesNotContain("vehicle-state:")
- .doesNotContain("vehicle-stat:");
+ .doesNotContain("vehicle-stat:")
+ .doesNotContain("VEHICLE_IDENTITY_STORE");
}
private static Properties applicationProperties() {