diff --git a/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfiguration.java b/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfiguration.java index a98b87fb..c49950a8 100644 --- a/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfiguration.java +++ b/modules/services/event-history-service/src/main/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfiguration.java @@ -27,6 +27,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.context.annotation.Bean; import org.springframework.beans.factory.ObjectProvider; +import org.springframework.beans.factory.annotation.Value; import java.net.URI; import java.nio.file.Path; @@ -67,6 +68,16 @@ public class EventHistoryAutoConfiguration { return new EventHistoryEnvelopeIngestor(store, mapper, writer.getIfAvailable()); } + @Bean + @ConditionalOnBean(TdengineHistoryWriter.class) + @ConditionalOnMissingBean + public EventHistoryEnvelopeIngestor tdengineEventHistoryEnvelopeIngestor(TelemetryEnvelopeRecordMapper mapper, + TdengineHistoryWriter writer, + @Value("${lingniu.ingest.tdengine-history.telemetry-fields-enabled:false}") + boolean telemetryFieldsEnabled) { + return new EventHistoryEnvelopeIngestor(mapper, writer, telemetryFieldsEnabled); + } + @Bean @ConditionalOnBean({EventHistoryEnvelopeIngestor.class, EnvelopeDeadLetterSink.class}) @ConditionalOnMissingBean(name = "eventHistoryEnvelopeConsumerProcessor") diff --git a/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfigurationTest.java b/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfigurationTest.java index 02d1d4b4..6fbf55b0 100644 --- a/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfigurationTest.java +++ b/modules/services/event-history-service/src/test/java/com/lingniu/ingest/eventhistory/config/EventHistoryAutoConfigurationTest.java @@ -15,6 +15,7 @@ import com.lingniu.ingest.eventhistory.TelemetryFieldHistoryController; import com.lingniu.ingest.eventhistory.TelemetryEnvelopeRecordMapper; import com.lingniu.ingest.protocol.gb32960.codec.Gb32960MessageDecoder; import com.lingniu.ingest.tdenginehistory.TdengineHistoryReader; +import com.lingniu.ingest.tdenginehistory.TdengineHistoryWriter; import com.lingniu.ingest.sink.archive.config.SinkArchiveProperties; import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; @@ -91,6 +92,22 @@ class EventHistoryAutoConfigurationTest { }); } + @Test + void createsHistoryConsumerWithTdengineWriterWhenEventFileStoreIsDisabled() { + new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(EventHistoryAutoConfiguration.class)) + .withBean(EnvelopeDeadLetterSink.class, () -> record -> {}) + .withBean(TdengineHistoryWriter.class, () -> mock(TdengineHistoryWriter.class)) + .withPropertyValues("lingniu.ingest.event-history.enabled=true") + .run(context -> { + assertThat(context).doesNotHaveBean(EventFileStore.class); + assertThat(context).hasSingleBean(TelemetryEnvelopeRecordMapper.class); + assertThat(context).hasSingleBean(EventHistoryEnvelopeIngestor.class); + assertThat(context.getBeansOfType(EnvelopeConsumerProcessor.class)) + .containsOnlyKeys("eventHistoryEnvelopeConsumerProcessor"); + }); + } + @Test void createsJt808LocationHistoryControllerWhenTdengineReaderExists() { contextRunner