chore: fix active identity store to mysql
This commit is contained in:
@@ -36,8 +36,6 @@
|
|||||||
<string>vehicle.dlq.gb32960.v1</string>
|
<string>vehicle.dlq.gb32960.v1</string>
|
||||||
<key>SINK_ARCHIVE_PATH</key>
|
<key>SINK_ARCHIVE_PATH</key>
|
||||||
<string>__SHARED_ARCHIVE_PATH__</string>
|
<string>__SHARED_ARCHIVE_PATH__</string>
|
||||||
<key>VEHICLE_IDENTITY_STORE</key>
|
|
||||||
<string>mysql</string>
|
|
||||||
<key>VEHICLE_IDENTITY_MYSQL_TABLE</key>
|
<key>VEHICLE_IDENTITY_MYSQL_TABLE</key>
|
||||||
<string>vehicle_identity_binding</string>
|
<string>vehicle_identity_binding</string>
|
||||||
<key>VEHICLE_IDENTITY_MYSQL_JDBC_URL</key>
|
<key>VEHICLE_IDENTITY_MYSQL_JDBC_URL</key>
|
||||||
|
|||||||
@@ -32,8 +32,6 @@
|
|||||||
<string>vehicle.dlq.jt808.v1</string>
|
<string>vehicle.dlq.jt808.v1</string>
|
||||||
<key>SINK_ARCHIVE_PATH</key>
|
<key>SINK_ARCHIVE_PATH</key>
|
||||||
<string>__SHARED_ARCHIVE_PATH__</string>
|
<string>__SHARED_ARCHIVE_PATH__</string>
|
||||||
<key>VEHICLE_IDENTITY_STORE</key>
|
|
||||||
<string>mysql</string>
|
|
||||||
<key>VEHICLE_IDENTITY_MYSQL_TABLE</key>
|
<key>VEHICLE_IDENTITY_MYSQL_TABLE</key>
|
||||||
<string>vehicle_identity_binding</string>
|
<string>vehicle_identity_binding</string>
|
||||||
<key>VEHICLE_IDENTITY_MYSQL_JDBC_URL</key>
|
<key>VEHICLE_IDENTITY_MYSQL_JDBC_URL</key>
|
||||||
|
|||||||
@@ -62,8 +62,6 @@
|
|||||||
<string>vehicle.dlq.mqtt-yutong.v1</string>
|
<string>vehicle.dlq.mqtt-yutong.v1</string>
|
||||||
<key>SINK_ARCHIVE_PATH</key>
|
<key>SINK_ARCHIVE_PATH</key>
|
||||||
<string>__SHARED_ARCHIVE_PATH__</string>
|
<string>__SHARED_ARCHIVE_PATH__</string>
|
||||||
<key>VEHICLE_IDENTITY_STORE</key>
|
|
||||||
<string>mysql</string>
|
|
||||||
<key>VEHICLE_IDENTITY_MYSQL_TABLE</key>
|
<key>VEHICLE_IDENTITY_MYSQL_TABLE</key>
|
||||||
<string>vehicle_identity_binding</string>
|
<string>vehicle_identity_binding</string>
|
||||||
<key>VEHICLE_IDENTITY_MYSQL_JDBC_URL</key>
|
<key>VEHICLE_IDENTITY_MYSQL_JDBC_URL</key>
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ x-common-env: &common-env
|
|||||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-}
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-}
|
||||||
|
|
||||||
x-identity-mysql-env: &identity-mysql-env
|
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_JDBC_URL: ${MYSQL_JDBC_URL:-}
|
||||||
VEHICLE_IDENTITY_MYSQL_USERNAME: ${MYSQL_USERNAME:-}
|
VEHICLE_IDENTITY_MYSQL_USERNAME: ${MYSQL_USERNAME:-}
|
||||||
VEHICLE_IDENTITY_MYSQL_PASSWORD: ${MYSQL_PASSWORD:-}
|
VEHICLE_IDENTITY_MYSQL_PASSWORD: ${MYSQL_PASSWORD:-}
|
||||||
|
|||||||
@@ -162,8 +162,8 @@ deploy/local/launchctl/
|
|||||||
|
|
||||||
JT808 注册身份绑定:
|
JT808 注册身份绑定:
|
||||||
|
|
||||||
- 生产默认使用 `VEHICLE_IDENTITY_STORE=mysql`,不再使用 file/memory 作为运行时身份绑定仓储。
|
- 生产身份绑定固定使用 MySQL,不再提供 file/memory/sqlite 运行时切换入口。
|
||||||
- 生产需要把 0x0100 注册信息维护到 MySQL 时,设置 `VEHICLE_IDENTITY_STORE=mysql`。
|
- 生产需要把 0x0100 注册信息维护到 MySQL 时,只需要配置 `VEHICLE_IDENTITY_MYSQL_*` 连接参数。
|
||||||
- 需要提供 `VEHICLE_IDENTITY_MYSQL_JDBC_URL`、`VEHICLE_IDENTITY_MYSQL_USERNAME`、`VEHICLE_IDENTITY_MYSQL_PASSWORD`。
|
- 需要提供 `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 注册字段。
|
- 服务启动时自动创建 `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);`
|
- 注册帧无真实 VIN 时也会写入 registration 表,`vin` 默认为 `unknown`。外部系统识别车辆后只需要维护车牌和 VIN,例如:`INSERT INTO vehicle_identity_binding (plate, vin) VALUES ('沪A61559F', 'LNVIN000000000001') ON DUPLICATE KEY UPDATE vin = VALUES(vin);`
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ lingniu:
|
|||||||
store: redis
|
store: redis
|
||||||
ttl: ${SESSION_TTL:30m}
|
ttl: ${SESSION_TTL:30m}
|
||||||
identity:
|
identity:
|
||||||
store: ${VEHICLE_IDENTITY_STORE:mysql}
|
store: mysql
|
||||||
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}
|
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}
|
username: ${VEHICLE_IDENTITY_MYSQL_USERNAME:root}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class Gb32960IngestAppDefaultsTest {
|
|||||||
.containsEntry("lingniu.ingest.sink.archive.enabled", "${SINK_ARCHIVE_ENABLED:true}")
|
.containsEntry("lingniu.ingest.sink.archive.enabled", "${SINK_ARCHIVE_ENABLED:true}")
|
||||||
.containsEntry("lingniu.ingest.sink.archive.path", "${SINK_ARCHIVE_PATH:./archive/}")
|
.containsEntry("lingniu.ingest.sink.archive.path", "${SINK_ARCHIVE_PATH:./archive/}")
|
||||||
.containsEntry("lingniu.ingest.session.store", "redis")
|
.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",
|
.containsEntry("lingniu.ingest.identity.mysql.table-name",
|
||||||
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
|
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
|
||||||
.containsEntry("management.endpoints.web.exposure.include",
|
.containsEntry("management.endpoints.web.exposure.include",
|
||||||
@@ -68,7 +68,8 @@ class Gb32960IngestAppDefaultsTest {
|
|||||||
assertThat(applicationYaml())
|
assertThat(applicationYaml())
|
||||||
.contains("password: ${GB32960_PLATFORM_PWD_HYUNDAI:}")
|
.contains("password: ${GB32960_PLATFORM_PWD_HYUNDAI:}")
|
||||||
.contains("password: ${GB32960_PLATFORM_PWD_YUEJIN:}")
|
.contains("password: ${GB32960_PLATFORM_PWD_YUEJIN:}")
|
||||||
.doesNotContain("SESSION_STORE");
|
.doesNotContain("SESSION_STORE")
|
||||||
|
.doesNotContain("VEHICLE_IDENTITY_STORE");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Properties applicationProperties() {
|
private static Properties applicationProperties() {
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ lingniu:
|
|||||||
store: redis
|
store: redis
|
||||||
ttl: ${SESSION_TTL:30m}
|
ttl: ${SESSION_TTL:30m}
|
||||||
identity:
|
identity:
|
||||||
store: ${VEHICLE_IDENTITY_STORE:mysql}
|
store: mysql
|
||||||
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}
|
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}
|
username: ${VEHICLE_IDENTITY_MYSQL_USERNAME:root}
|
||||||
|
|||||||
@@ -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.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.sink.kafka.topics.dlq", "${KAFKA_TOPIC_JT808_DLQ:vehicle.dlq.jt808.v1}")
|
||||||
.containsEntry("lingniu.ingest.session.store", "redis")
|
.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",
|
.containsEntry("lingniu.ingest.identity.mysql.table-name",
|
||||||
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
|
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
|
||||||
.containsEntry("lingniu.ingest.identity.mysql.jdbc-url",
|
.containsEntry("lingniu.ingest.identity.mysql.jdbc-url",
|
||||||
@@ -55,7 +55,8 @@ class Jt808IngestAppDefaultsTest {
|
|||||||
.doesNotContain("event-file-store:")
|
.doesNotContain("event-file-store:")
|
||||||
.doesNotContain("vehicle-state:")
|
.doesNotContain("vehicle-state:")
|
||||||
.doesNotContain("vehicle-stat:")
|
.doesNotContain("vehicle-stat:")
|
||||||
.doesNotContain("SESSION_STORE");
|
.doesNotContain("SESSION_STORE")
|
||||||
|
.doesNotContain("VEHICLE_IDENTITY_STORE");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Properties applicationProperties() {
|
private static Properties applicationProperties() {
|
||||||
|
|||||||
@@ -561,7 +561,8 @@ class PortainerComposeResourceLimitsTest {
|
|||||||
|
|
||||||
assertThat(compose)
|
assertThat(compose)
|
||||||
.contains("x-identity-mysql-env: &identity-mysql-env")
|
.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)
|
assertThat(gb32960Service)
|
||||||
.contains("- *identity-mysql-env")
|
.contains("- *identity-mysql-env")
|
||||||
.contains("- *redis-session-env");
|
.contains("- *redis-session-env");
|
||||||
@@ -630,7 +631,8 @@ class PortainerComposeResourceLimitsTest {
|
|||||||
.contains("<key>HTTP_PORT</key>\n <string>" + httpPort + "</string>")
|
.contains("<key>HTTP_PORT</key>\n <string>" + httpPort + "</string>")
|
||||||
.contains("<key>NACOS_CONFIG_ENABLED</key>\n <string>false</string>")
|
.contains("<key>NACOS_CONFIG_ENABLED</key>\n <string>false</string>")
|
||||||
.contains("<key>MANAGEMENT_HEALTH_REDIS_ENABLED</key>\n <string>false</string>")
|
.contains("<key>MANAGEMENT_HEALTH_REDIS_ENABLED</key>\n <string>false</string>")
|
||||||
.contains("/tmp/lingniu-" + serviceName + "-live/");
|
.contains("/tmp/lingniu-" + serviceName + "-live/")
|
||||||
|
.doesNotContain("<key>VEHICLE_IDENTITY_STORE</key>");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String serviceBlock(String compose, String serviceName) {
|
private static String serviceBlock(String compose, String serviceName) {
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ lingniu:
|
|||||||
rate-limit:
|
rate-limit:
|
||||||
per-vin-qps: 50
|
per-vin-qps: 50
|
||||||
identity:
|
identity:
|
||||||
store: ${VEHICLE_IDENTITY_STORE:mysql}
|
store: mysql
|
||||||
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}
|
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}
|
username: ${VEHICLE_IDENTITY_MYSQL_USERNAME:root}
|
||||||
|
|||||||
@@ -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.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.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.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",
|
.containsEntry("lingniu.ingest.identity.mysql.table-name",
|
||||||
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
|
"${VEHICLE_IDENTITY_MYSQL_TABLE:vehicle_identity_bindings}")
|
||||||
.containsEntry("lingniu.ingest.sink.archive.enabled", "${SINK_ARCHIVE_ENABLED:true}")
|
.containsEntry("lingniu.ingest.sink.archive.enabled", "${SINK_ARCHIVE_ENABLED:true}")
|
||||||
@@ -48,7 +48,8 @@ class YutongMqttAppDefaultsTest {
|
|||||||
.doesNotContain("event-history:")
|
.doesNotContain("event-history:")
|
||||||
.doesNotContain("event-file-store:")
|
.doesNotContain("event-file-store:")
|
||||||
.doesNotContain("vehicle-state:")
|
.doesNotContain("vehicle-state:")
|
||||||
.doesNotContain("vehicle-stat:");
|
.doesNotContain("vehicle-stat:")
|
||||||
|
.doesNotContain("VEHICLE_IDENTITY_STORE");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Properties applicationProperties() {
|
private static Properties applicationProperties() {
|
||||||
|
|||||||
Reference in New Issue
Block a user