Сессия ZooKeeper истекла в тестах
Я использую EmbeddedKafka для тестирования моего модуля со следующей конфигурацией аннотаций:
@ExtendWith(SpringExtension.class)
@SpringBootTest
@TestPropertySource(locations = "classpath:test.properties")
@EmbeddedKafka(partitions = 1,
topics = {"topic"},
brokerProperties = {
"auto.create.topics.enable=${topics.autoCreate:false}",
"delete.topic.enable=${topic.delete:true}",
"broker.id=2"})
Это работает в большинстве случаев.
Но иногда это не удается при создании весеннего контекста, потому что время сеанса zookeeper истекло:
java.lang.IllegalStateException: не удалось загрузить ApplicationContext в
...
в java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) в java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:6grain или org.ing).concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) в java.base/java.lang.Thread.run(Thread.java:834) Вызвано: org.springframework.beans.factory.BeanCreationException: ошибка с именем 'embeddedKafka': сбой вызова метода init; вложенное исключение составляет org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Сессия просрочена на org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:410) в org.springframework.kafka.test.context.EmbeddedKafkaContextCustomizer.customizeContext(EmbeddedKafkaContextCustomizer.java:106) в org.springframework.boot.test.context.SpringBootContextLoader$ContextCustomizerAdapter.initialize(SpringBootContextLoader.java:320) по адресу org.springframework.boot.SpringApplication.applyInitializers(SpringApplication.java:649) по адресу org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:373) по адресу org.springframework. Spring.pplication.prot. Java:314) в org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader. Еще 73 причины: org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Срок действия сеанса истек в org.apache.zookeeper.KeeperException.create(KeeperException.java:130) в kafka.zk.KafkaZkCliheralEZ 1631) по адресу kafka.zk.KafkaZkClient.registerBroker(KafkaZkClient.scala:87) по адресу kafka.server.KafkaServer.startup(KafkaServer.scala:257) по адресу kafka.utils.TestUtils$.createSerala at:132UU.utils.TestUtils.createServer(TestUtils.scala) в org.springframework.kafka.test.EmbeddedKafkaBroker.afterPropertiesSet(EmbeddedKafkaBroker.java:215) в org.springframework.beans.factory.support.Abab. eBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1804) в org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean (AbstractAutowireFable
Кто-то знает, почему это случилось? Зачем вообще нужен ZooKeeper при использовании EmbeddedKafka??
Любая помощь будет оценена.