0

我用一个简单的测试创建了一个新的 spring boot 项目:

@RunWith(SpringRunner.class)
@SpringBootTest
public class ExampleApplicationTests {

    @Test
    public void contextLoads() {
    }

}

当我运行此测试时,它成功了。但是,如果我将任何方法注释@KafkaListener注释添加到任何服务:

@KafkaListener(topics = "test", groupId = "v-group")
public void test(){
  log.info("test");
}

并运行测试,它有时会工作并引发异常:

Caused by: org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.kafka.config.internalKafkaListenerEndpointRegistry'; nested exception is org.apache.kafka.common.errors.TimeoutException: Timeout expired while fetching topic metadata
4

1 回答 1

1

默认情况下,当应用程序上下文加载时,框架会将start()监听器容器用于监听器。

您可以将autoStartup属性设置为false以防止容器启动。

@KafkaListener(topics = "test", groupId = "v-group", autoStartup = "false")
public void test(){
  log.info("test");
}
于 2019-05-14T15:27:25.193 回答