我正在使用 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 会话超时,它在创建 spring 上下文时失败:
java.lang.IllegalStateException:无法加载 ApplicationContext 在
...
在 java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 在 java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 在 org.gradle.internal .concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) at java.base/java.lang.Thread.run(Thread.java:834) 原因:org.springframework.beans.factory.BeanCreationException: 创建 bean 时出错名称为“embeddedKafka”:调用 init 方法失败;嵌套异常是 org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = Session expired at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745) at org.springframework.beans.factory.support。 org.apache.zookeeper.KeeperException$SessionExpiredException: KeeperErrorCode = 会话在 org.apache.zookeeper.KeeperException.create(KeeperException.java:130) 在 kafka.zk.KafkaZkClient.checkedEphemeralCreate(KafkaZkClient.scala:1631) 在 kafka.zk 过期.KafkaZkClient.registerBroker(KafkaZkClient.scala:87) at kafka.server.KafkaServer.startup(KafkaServer.scala:257) at kafka.utils.TestUtils$.createServer(TestUtils.scala:132) at kafka.utils.TestUtils.createServer (TestUtils.scala) 在 org.springframework.kafka.test.EmbeddedKafkaBroker.afterPropertiesSet(EmbeddedKafkaBroker.java:215) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1804) 在 org.springframework。 beans.factory.support.AbstractAutowireCapableBeanFactory。initializeBean(AbstractAutowireCapableBeanFactory.java:1741) ... 82 更多
有人知道为什么会发生吗?为什么在使用 EmbeddedKafka 时甚至需要 ZooKeeper?
任何帮助,将不胜感激。