refactor: allow tdengine-only history consumer

This commit is contained in:
lingniu
2026-07-01 04:42:50 +08:00
parent 848a1647df
commit f1f29ddd4e
2 changed files with 28 additions and 0 deletions

View File

@@ -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")

View File

@@ -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