chore: decouple history gb32960 decoding
This commit is contained in:
@@ -29,10 +29,6 @@ springdoc:
|
||||
|
||||
lingniu:
|
||||
ingest:
|
||||
gb32960:
|
||||
enabled: true
|
||||
server:
|
||||
enabled: false
|
||||
sink:
|
||||
kafka:
|
||||
enabled: true
|
||||
|
||||
@@ -11,7 +11,6 @@ import com.lingniu.ingest.eventhistory.Jt808LocationHistoryController;
|
||||
import com.lingniu.ingest.eventhistory.LocationHistoryController;
|
||||
import com.lingniu.ingest.eventhistory.RawFrameHistoryController;
|
||||
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.sink.kafka.KafkaEnvelopeDeadLetterSink;
|
||||
import com.lingniu.ingest.sink.kafka.KafkaEventSink;
|
||||
@@ -80,7 +79,6 @@ class VehicleHistoryAppCompositionTest {
|
||||
.withConfiguration(AutoConfigurations.of(
|
||||
TdengineHistoryAutoConfiguration.class,
|
||||
KafkaSinkAutoConfiguration.class,
|
||||
Gb32960AutoConfiguration.class,
|
||||
EventHistoryAutoConfiguration.class))
|
||||
.withUserConfiguration(VehicleHistoryKafkaConsumerConfiguration.class)
|
||||
.withAllowBeanDefinitionOverriding(true)
|
||||
@@ -89,8 +87,6 @@ class VehicleHistoryAppCompositionTest {
|
||||
"lingniu.ingest.tdengine-history.enabled=true",
|
||||
"lingniu.ingest.tdengine-history.database=vehicle_history_test",
|
||||
"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.bootstrap-servers=localhost:9092",
|
||||
"lingniu.ingest.sink.kafka.consumer.enabled=false",
|
||||
@@ -144,8 +140,7 @@ class VehicleHistoryAppCompositionTest {
|
||||
"lingniu.ingest.event-history.enabled=true",
|
||||
"lingniu.ingest.tdengine-history.enabled=false",
|
||||
"lingniu.ingest.sink.kafka.enabled=false",
|
||||
"lingniu.ingest.sink.kafka.consumer.enabled=false",
|
||||
"lingniu.ingest.gb32960.enabled=false")
|
||||
"lingniu.ingest.sink.kafka.consumer.enabled=false")
|
||||
.run(context -> {
|
||||
assertThat(context).hasSingleBean(LocationHistoryController.class);
|
||||
assertThat(context).hasSingleBean(RawFrameHistoryController.class);
|
||||
|
||||
@@ -25,8 +25,6 @@ class VehicleHistoryAppDefaultsTest {
|
||||
"spring.config.import[0]",
|
||||
"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("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.database", "${TDENGINE_HISTORY_DATABASE:vehicle_history}")
|
||||
.containsEntry(
|
||||
@@ -104,6 +102,7 @@ class VehicleHistoryAppDefaultsTest {
|
||||
.containsEntry("management.endpoints.web.exposure.include", "health,info,metrics,prometheus");
|
||||
|
||||
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-stat."))
|
||||
.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.LocationHistoryController;
|
||||
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.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.tdenginehistory.config.TdengineHistoryAutoConfiguration;
|
||||
import com.lingniu.ingest.tdenginehistory.TdengineHistoryReader;
|
||||
@@ -27,6 +50,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import java.net.URI;
|
||||
import java.nio.file.Path;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Event History 查询/消费服务自动装配。
|
||||
@@ -42,7 +66,6 @@ import java.nio.file.Path;
|
||||
*/
|
||||
@AutoConfiguration
|
||||
@AutoConfigureAfter({
|
||||
Gb32960AutoConfiguration.class,
|
||||
KafkaSinkAutoConfiguration.class,
|
||||
TdengineHistoryAutoConfiguration.class
|
||||
})
|
||||
@@ -86,6 +109,34 @@ public class EventHistoryAutoConfiguration {
|
||||
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
|
||||
@ConditionalOnBean(Gb32960MessageDecoder.class)
|
||||
@ConditionalOnMissingBean
|
||||
|
||||
@@ -41,7 +41,8 @@ class EventHistoryAutoConfigurationTest {
|
||||
.containsOnlyKeys(
|
||||
"eventHistoryEnvelopeConsumerProcessor",
|
||||
"eventHistoryRawEnvelopeConsumerProcessor");
|
||||
assertThat(context).doesNotHaveBean(Gb32960DecodedFrameService.class);
|
||||
assertThat(context).hasSingleBean(Gb32960MessageDecoder.class);
|
||||
assertThat(context).hasSingleBean(Gb32960DecodedFrameService.class);
|
||||
assertThat(context).doesNotHaveBean(Gb32960FrameController.class);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user