chore: decouple history gb32960 decoding
This commit is contained in:
@@ -29,10 +29,6 @@ springdoc:
|
|||||||
|
|
||||||
lingniu:
|
lingniu:
|
||||||
ingest:
|
ingest:
|
||||||
gb32960:
|
|
||||||
enabled: true
|
|
||||||
server:
|
|
||||||
enabled: false
|
|
||||||
sink:
|
sink:
|
||||||
kafka:
|
kafka:
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import com.lingniu.ingest.eventhistory.Jt808LocationHistoryController;
|
|||||||
import com.lingniu.ingest.eventhistory.LocationHistoryController;
|
import com.lingniu.ingest.eventhistory.LocationHistoryController;
|
||||||
import com.lingniu.ingest.eventhistory.RawFrameHistoryController;
|
import com.lingniu.ingest.eventhistory.RawFrameHistoryController;
|
||||||
import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder;
|
import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder;
|
||||||
import com.lingniu.ingest.protocol.gb32960.config.Gb32960AutoConfiguration;
|
|
||||||
import com.lingniu.ingest.protocol.gb32960.inbound.Gb32960NettyServer;
|
import com.lingniu.ingest.protocol.gb32960.inbound.Gb32960NettyServer;
|
||||||
import com.lingniu.ingest.sink.kafka.KafkaEnvelopeDeadLetterSink;
|
import com.lingniu.ingest.sink.kafka.KafkaEnvelopeDeadLetterSink;
|
||||||
import com.lingniu.ingest.sink.kafka.KafkaEventSink;
|
import com.lingniu.ingest.sink.kafka.KafkaEventSink;
|
||||||
@@ -80,7 +79,6 @@ class VehicleHistoryAppCompositionTest {
|
|||||||
.withConfiguration(AutoConfigurations.of(
|
.withConfiguration(AutoConfigurations.of(
|
||||||
TdengineHistoryAutoConfiguration.class,
|
TdengineHistoryAutoConfiguration.class,
|
||||||
KafkaSinkAutoConfiguration.class,
|
KafkaSinkAutoConfiguration.class,
|
||||||
Gb32960AutoConfiguration.class,
|
|
||||||
EventHistoryAutoConfiguration.class))
|
EventHistoryAutoConfiguration.class))
|
||||||
.withUserConfiguration(VehicleHistoryKafkaConsumerConfiguration.class)
|
.withUserConfiguration(VehicleHistoryKafkaConsumerConfiguration.class)
|
||||||
.withAllowBeanDefinitionOverriding(true)
|
.withAllowBeanDefinitionOverriding(true)
|
||||||
@@ -89,8 +87,6 @@ class VehicleHistoryAppCompositionTest {
|
|||||||
"lingniu.ingest.tdengine-history.enabled=true",
|
"lingniu.ingest.tdengine-history.enabled=true",
|
||||||
"lingniu.ingest.tdengine-history.database=vehicle_history_test",
|
"lingniu.ingest.tdengine-history.database=vehicle_history_test",
|
||||||
"lingniu.ingest.event-history.enabled=true",
|
"lingniu.ingest.event-history.enabled=true",
|
||||||
"lingniu.ingest.gb32960.enabled=true",
|
|
||||||
"lingniu.ingest.gb32960.server.enabled=false",
|
|
||||||
"lingniu.ingest.sink.kafka.enabled=true",
|
"lingniu.ingest.sink.kafka.enabled=true",
|
||||||
"lingniu.ingest.sink.kafka.bootstrap-servers=localhost:9092",
|
"lingniu.ingest.sink.kafka.bootstrap-servers=localhost:9092",
|
||||||
"lingniu.ingest.sink.kafka.consumer.enabled=false",
|
"lingniu.ingest.sink.kafka.consumer.enabled=false",
|
||||||
@@ -144,8 +140,7 @@ class VehicleHistoryAppCompositionTest {
|
|||||||
"lingniu.ingest.event-history.enabled=true",
|
"lingniu.ingest.event-history.enabled=true",
|
||||||
"lingniu.ingest.tdengine-history.enabled=false",
|
"lingniu.ingest.tdengine-history.enabled=false",
|
||||||
"lingniu.ingest.sink.kafka.enabled=false",
|
"lingniu.ingest.sink.kafka.enabled=false",
|
||||||
"lingniu.ingest.sink.kafka.consumer.enabled=false",
|
"lingniu.ingest.sink.kafka.consumer.enabled=false")
|
||||||
"lingniu.ingest.gb32960.enabled=false")
|
|
||||||
.run(context -> {
|
.run(context -> {
|
||||||
assertThat(context).hasSingleBean(LocationHistoryController.class);
|
assertThat(context).hasSingleBean(LocationHistoryController.class);
|
||||||
assertThat(context).hasSingleBean(RawFrameHistoryController.class);
|
assertThat(context).hasSingleBean(RawFrameHistoryController.class);
|
||||||
|
|||||||
@@ -25,8 +25,6 @@ class VehicleHistoryAppDefaultsTest {
|
|||||||
"spring.config.import[0]",
|
"spring.config.import[0]",
|
||||||
"optional:nacos:${spring.application.name}.${NACOS_CONFIG_FILE_EXTENSION:yml}?group=${NACOS_GROUP:DEFAULT_GROUP}&refreshEnabled=${NACOS_REFRESH_ENABLED:true}")
|
"optional:nacos:${spring.application.name}.${NACOS_CONFIG_FILE_EXTENSION:yml}?group=${NACOS_GROUP:DEFAULT_GROUP}&refreshEnabled=${NACOS_REFRESH_ENABLED:true}")
|
||||||
.containsEntry("spring.cloud.nacos.config.server-addr", "${NACOS_SERVER_ADDR:127.0.0.1:8848}")
|
.containsEntry("spring.cloud.nacos.config.server-addr", "${NACOS_SERVER_ADDR:127.0.0.1:8848}")
|
||||||
.containsEntry("lingniu.ingest.gb32960.enabled", true)
|
|
||||||
.containsEntry("lingniu.ingest.gb32960.server.enabled", false)
|
|
||||||
.containsEntry("lingniu.ingest.tdengine-history.enabled", "${TDENGINE_HISTORY_ENABLED:false}")
|
.containsEntry("lingniu.ingest.tdengine-history.enabled", "${TDENGINE_HISTORY_ENABLED:false}")
|
||||||
.containsEntry("lingniu.ingest.tdengine-history.database", "${TDENGINE_HISTORY_DATABASE:vehicle_history}")
|
.containsEntry("lingniu.ingest.tdengine-history.database", "${TDENGINE_HISTORY_DATABASE:vehicle_history}")
|
||||||
.containsEntry(
|
.containsEntry(
|
||||||
@@ -104,6 +102,7 @@ class VehicleHistoryAppDefaultsTest {
|
|||||||
.containsEntry("management.endpoints.web.exposure.include", "health,info,metrics,prometheus");
|
.containsEntry("management.endpoints.web.exposure.include", "health,info,metrics,prometheus");
|
||||||
|
|
||||||
assertThat(properties.stringPropertyNames())
|
assertThat(properties.stringPropertyNames())
|
||||||
|
.noneMatch(name -> name.startsWith("lingniu.ingest.gb32960."))
|
||||||
.noneMatch(name -> name.startsWith("lingniu.ingest.vehicle-state."))
|
.noneMatch(name -> name.startsWith("lingniu.ingest.vehicle-state."))
|
||||||
.noneMatch(name -> name.startsWith("lingniu.ingest.vehicle-stat."))
|
.noneMatch(name -> name.startsWith("lingniu.ingest.vehicle-stat."))
|
||||||
.noneMatch(name -> name.startsWith("lingniu.ingest.sink.archive."))
|
.noneMatch(name -> name.startsWith("lingniu.ingest.sink.archive."))
|
||||||
|
|||||||
@@ -10,8 +10,31 @@ import com.lingniu.ingest.eventhistory.Jt808LocationHistoryController;
|
|||||||
import com.lingniu.ingest.eventhistory.Jt808RawFrameHistoryController;
|
import com.lingniu.ingest.eventhistory.Jt808RawFrameHistoryController;
|
||||||
import com.lingniu.ingest.eventhistory.LocationHistoryController;
|
import com.lingniu.ingest.eventhistory.LocationHistoryController;
|
||||||
import com.lingniu.ingest.eventhistory.RawFrameHistoryController;
|
import com.lingniu.ingest.eventhistory.RawFrameHistoryController;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.Gb32960BodyParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.Gb32960CommandParser;
|
||||||
import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder;
|
import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder;
|
||||||
import com.lingniu.ingest.protocol.gb32960.config.Gb32960AutoConfiguration;
|
import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.InfoBlockParserRegistry;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.AlarmV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.DriveMotorV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.EngineV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.ExtremeValueV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.FuelCellV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.PositionV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.TemperatureV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VehicleV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2016.VoltageV2016BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.AlarmV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.BatteryTemperatureV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.DriveMotorV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.EngineV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.FuelCellStackV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.FuelCellV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.MinParallelVoltageV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.PositionV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.SuperCapacitorExtremeV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.SuperCapacitorV2025BlockParser;
|
||||||
|
import com.lingniu.ingest.protocol.gb32960.codec.parser.v2025.VehicleV2025BlockParser;
|
||||||
import com.lingniu.ingest.sink.kafka.KafkaSinkAutoConfiguration;
|
import com.lingniu.ingest.sink.kafka.KafkaSinkAutoConfiguration;
|
||||||
import com.lingniu.ingest.tdenginehistory.config.TdengineHistoryAutoConfiguration;
|
import com.lingniu.ingest.tdenginehistory.config.TdengineHistoryAutoConfiguration;
|
||||||
import com.lingniu.ingest.tdenginehistory.TdengineHistoryReader;
|
import com.lingniu.ingest.tdenginehistory.TdengineHistoryReader;
|
||||||
@@ -27,6 +50,7 @@ import org.springframework.beans.factory.annotation.Value;
|
|||||||
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event History 查询/消费服务自动装配。
|
* Event History 查询/消费服务自动装配。
|
||||||
@@ -42,7 +66,6 @@ import java.nio.file.Path;
|
|||||||
*/
|
*/
|
||||||
@AutoConfiguration
|
@AutoConfiguration
|
||||||
@AutoConfigureAfter({
|
@AutoConfigureAfter({
|
||||||
Gb32960AutoConfiguration.class,
|
|
||||||
KafkaSinkAutoConfiguration.class,
|
KafkaSinkAutoConfiguration.class,
|
||||||
TdengineHistoryAutoConfiguration.class
|
TdengineHistoryAutoConfiguration.class
|
||||||
})
|
})
|
||||||
@@ -86,6 +109,34 @@ public class EventHistoryAutoConfiguration {
|
|||||||
return new ApiExceptionHandler();
|
return new ApiExceptionHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
public Gb32960MessageDecoder gb32960HistoryMessageDecoder() {
|
||||||
|
List<InfoBlockParser> parsers = List.of(
|
||||||
|
new VehicleV2016BlockParser(),
|
||||||
|
new DriveMotorV2016BlockParser(),
|
||||||
|
new FuelCellV2016BlockParser(),
|
||||||
|
new EngineV2016BlockParser(),
|
||||||
|
new PositionV2016BlockParser(),
|
||||||
|
new ExtremeValueV2016BlockParser(),
|
||||||
|
new AlarmV2016BlockParser(),
|
||||||
|
new VoltageV2016BlockParser(),
|
||||||
|
new TemperatureV2016BlockParser(),
|
||||||
|
new VehicleV2025BlockParser(),
|
||||||
|
new DriveMotorV2025BlockParser(),
|
||||||
|
new FuelCellV2025BlockParser(),
|
||||||
|
new EngineV2025BlockParser(),
|
||||||
|
new PositionV2025BlockParser(),
|
||||||
|
new AlarmV2025BlockParser(),
|
||||||
|
new MinParallelVoltageV2025BlockParser(),
|
||||||
|
new BatteryTemperatureV2025BlockParser(),
|
||||||
|
new FuelCellStackV2025BlockParser(),
|
||||||
|
new SuperCapacitorV2025BlockParser(),
|
||||||
|
new SuperCapacitorExtremeV2025BlockParser());
|
||||||
|
Gb32960BodyParser bodyParser = new Gb32960BodyParser(new InfoBlockParserRegistry(parsers));
|
||||||
|
return new Gb32960MessageDecoder(bodyParser, new Gb32960CommandParser());
|
||||||
|
}
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@ConditionalOnBean(Gb32960MessageDecoder.class)
|
@ConditionalOnBean(Gb32960MessageDecoder.class)
|
||||||
@ConditionalOnMissingBean
|
@ConditionalOnMissingBean
|
||||||
|
|||||||
@@ -41,7 +41,8 @@ class EventHistoryAutoConfigurationTest {
|
|||||||
.containsOnlyKeys(
|
.containsOnlyKeys(
|
||||||
"eventHistoryEnvelopeConsumerProcessor",
|
"eventHistoryEnvelopeConsumerProcessor",
|
||||||
"eventHistoryRawEnvelopeConsumerProcessor");
|
"eventHistoryRawEnvelopeConsumerProcessor");
|
||||||
assertThat(context).doesNotHaveBean(Gb32960DecodedFrameService.class);
|
assertThat(context).hasSingleBean(Gb32960MessageDecoder.class);
|
||||||
|
assertThat(context).hasSingleBean(Gb32960DecodedFrameService.class);
|
||||||
assertThat(context).doesNotHaveBean(Gb32960FrameController.class);
|
assertThat(context).doesNotHaveBean(Gb32960FrameController.class);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user