refactor: remove implicit memory session store

This commit is contained in:
lingniu
2026-07-01 08:36:07 +08:00
parent f80c47df0f
commit 625d09c856
4 changed files with 23 additions and 12 deletions

View File

@@ -6,6 +6,7 @@ import com.lingniu.ingest.identity.config.VehicleIdentityAutoConfiguration;
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.config.Gb32960AutoConfiguration;
import com.lingniu.ingest.protocol.gb32960.inbound.Gb32960NettyServer; import com.lingniu.ingest.protocol.gb32960.inbound.Gb32960NettyServer;
import com.lingniu.ingest.session.InMemorySessionStore;
import com.lingniu.ingest.session.config.SessionCoreAutoConfiguration; import com.lingniu.ingest.session.config.SessionCoreAutoConfiguration;
import com.lingniu.ingest.sink.archive.ArchiveStore; import com.lingniu.ingest.sink.archive.ArchiveStore;
import com.lingniu.ingest.sink.archive.RawArchiveEventSink; import com.lingniu.ingest.sink.archive.RawArchiveEventSink;
@@ -35,13 +36,13 @@ class Gb32960IngestAppCompositionTest {
Gb32960AutoConfiguration.class)) Gb32960AutoConfiguration.class))
.withAllowBeanDefinitionOverriding(true) .withAllowBeanDefinitionOverriding(true)
.withBean("kafkaProducer", KafkaProducer.class, Gb32960IngestAppCompositionTest::kafkaProducer) .withBean("kafkaProducer", KafkaProducer.class, Gb32960IngestAppCompositionTest::kafkaProducer)
.withBean(InMemorySessionStore.class, InMemorySessionStore::new)
.withPropertyValues( .withPropertyValues(
"lingniu.ingest.gb32960.enabled=true", "lingniu.ingest.gb32960.enabled=true",
"lingniu.ingest.gb32960.server.enabled=true", "lingniu.ingest.gb32960.server.enabled=true",
"lingniu.ingest.gb32960.port=0", "lingniu.ingest.gb32960.port=0",
"lingniu.ingest.identity.store=mysql", "lingniu.ingest.identity.store=mysql",
"lingniu.ingest.identity.mysql.initialize-schema=false", "lingniu.ingest.identity.mysql.initialize-schema=false",
"lingniu.ingest.session.store=memory",
"lingniu.ingest.sink.mq.enabled=true", "lingniu.ingest.sink.mq.enabled=true",
"lingniu.ingest.sink.mq.type=kafka", "lingniu.ingest.sink.mq.type=kafka",
"lingniu.ingest.sink.mq.bootstrap-servers=localhost:9092", "lingniu.ingest.sink.mq.bootstrap-servers=localhost:9092",

View File

@@ -6,6 +6,7 @@ import com.lingniu.ingest.identity.config.VehicleIdentityAutoConfiguration;
import com.lingniu.ingest.protocol.jt808.codec.Jt808MessageDecoder; import com.lingniu.ingest.protocol.jt808.codec.Jt808MessageDecoder;
import com.lingniu.ingest.protocol.jt808.config.Jt808AutoConfiguration; import com.lingniu.ingest.protocol.jt808.config.Jt808AutoConfiguration;
import com.lingniu.ingest.protocol.jt808.inbound.Jt808NettyServer; import com.lingniu.ingest.protocol.jt808.inbound.Jt808NettyServer;
import com.lingniu.ingest.session.InMemorySessionStore;
import com.lingniu.ingest.session.config.SessionCoreAutoConfiguration; import com.lingniu.ingest.session.config.SessionCoreAutoConfiguration;
import com.lingniu.ingest.sink.archive.ArchiveStore; import com.lingniu.ingest.sink.archive.ArchiveStore;
import com.lingniu.ingest.sink.archive.RawArchiveEventSink; import com.lingniu.ingest.sink.archive.RawArchiveEventSink;
@@ -35,12 +36,12 @@ class Jt808IngestAppCompositionTest {
Jt808AutoConfiguration.class)) Jt808AutoConfiguration.class))
.withAllowBeanDefinitionOverriding(true) .withAllowBeanDefinitionOverriding(true)
.withBean("kafkaProducer", KafkaProducer.class, Jt808IngestAppCompositionTest::kafkaProducer) .withBean("kafkaProducer", KafkaProducer.class, Jt808IngestAppCompositionTest::kafkaProducer)
.withBean(InMemorySessionStore.class, InMemorySessionStore::new)
.withPropertyValues( .withPropertyValues(
"lingniu.ingest.jt808.enabled=true", "lingniu.ingest.jt808.enabled=true",
"lingniu.ingest.jt808.port=0", "lingniu.ingest.jt808.port=0",
"lingniu.ingest.identity.store=mysql", "lingniu.ingest.identity.store=mysql",
"lingniu.ingest.identity.mysql.initialize-schema=false", "lingniu.ingest.identity.mysql.initialize-schema=false",
"lingniu.ingest.session.store=memory",
"lingniu.ingest.sink.mq.enabled=true", "lingniu.ingest.sink.mq.enabled=true",
"lingniu.ingest.sink.mq.type=kafka", "lingniu.ingest.sink.mq.type=kafka",
"lingniu.ingest.sink.mq.bootstrap-servers=localhost:9092", "lingniu.ingest.sink.mq.bootstrap-servers=localhost:9092",

View File

@@ -1,7 +1,6 @@
package com.lingniu.ingest.session.config; package com.lingniu.ingest.session.config;
import com.lingniu.ingest.session.CommandDispatcher; import com.lingniu.ingest.session.CommandDispatcher;
import com.lingniu.ingest.session.InMemorySessionStore;
import com.lingniu.ingest.session.NoopCommandDispatcher; import com.lingniu.ingest.session.NoopCommandDispatcher;
import com.lingniu.ingest.session.RedisSessionStore; import com.lingniu.ingest.session.RedisSessionStore;
import com.lingniu.ingest.session.SessionProperties; import com.lingniu.ingest.session.SessionProperties;
@@ -18,6 +17,12 @@ import org.springframework.data.redis.core.StringRedisTemplate;
@EnableConfigurationProperties(SessionProperties.class) @EnableConfigurationProperties(SessionProperties.class)
public class SessionCoreAutoConfiguration { public class SessionCoreAutoConfiguration {
@Bean
@ConditionalOnProperty(prefix = "lingniu.ingest.session", name = "store", havingValue = "memory")
public Object rejectedLegacyMemorySessionStore() {
throw new IllegalStateException("session.store=memory has been removed; configure session.store=redis");
}
@Bean @Bean
@ConditionalOnBean(StringRedisTemplate.class) @ConditionalOnBean(StringRedisTemplate.class)
@ConditionalOnProperty(prefix = "lingniu.ingest.session", name = "store", havingValue = "redis") @ConditionalOnProperty(prefix = "lingniu.ingest.session", name = "store", havingValue = "redis")
@@ -27,12 +32,6 @@ public class SessionCoreAutoConfiguration {
return new RedisSessionStore(redis, properties.getTtl()); return new RedisSessionStore(redis, properties.getTtl());
} }
@Bean
@ConditionalOnMissingBean
public SessionStore sessionStore() {
return new InMemorySessionStore();
}
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public CommandDispatcher commandDispatcher() { public CommandDispatcher commandDispatcher() {

View File

@@ -17,10 +17,10 @@ class SessionCoreAutoConfigurationTest {
.withConfiguration(AutoConfigurations.of(SessionCoreAutoConfiguration.class)); .withConfiguration(AutoConfigurations.of(SessionCoreAutoConfiguration.class));
@Test @Test
void usesInMemorySessionStoreByDefault() { void doesNotCreateImplicitInMemorySessionStoreByDefault() {
contextRunner.run(context -> { contextRunner.run(context -> {
assertThat(context).hasSingleBean(SessionStore.class); assertThat(context).doesNotHaveBean(SessionStore.class);
assertThat(context).hasSingleBean(InMemorySessionStore.class); assertThat(context).doesNotHaveBean(InMemorySessionStore.class);
}); });
} }
@@ -36,4 +36,14 @@ class SessionCoreAutoConfigurationTest {
assertThat(context).hasSingleBean(RedisSessionStore.class); assertThat(context).hasSingleBean(RedisSessionStore.class);
}); });
} }
@Test
void rejectsLegacyMemorySessionStoreMode() {
contextRunner
.withPropertyValues("lingniu.ingest.session.store=memory")
.run(context -> assertThat(context.getStartupFailure())
.hasRootCauseInstanceOf(IllegalStateException.class)
.hasMessageContaining("session.store=memory has been removed")
.hasMessageContaining("session.store=redis"));
}
} }