SpringBootTest завершится неудачно, если приложение содержит аннотацию @KafkaListener
Я создаю новый весенний загрузочный проект с простым тестом:
@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
1 ответ
По умолчанию при загрузке контекста приложения инфраструктура будет start()
контейнер слушателя для слушателя.
Вы можете установить autoStartup
собственность на false
чтобы предотвратить запуск контейнера.
@KafkaListener(topics = "test", groupId = "v-group", autoStartup = "false")
public void test(){
log.info("test");
}