SpringBootTest завершится неудачно, если приложение содержит аннотацию @KafkaListener - PullRequest
0 голосов
/ 14 мая 2019

Я создаю новый весенний загрузочный проект с простым тестом:

@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 Ответ

1 голос
/ 14 мая 2019

По умолчанию, когда загружается контекст приложения, платформа будет start() контейнер слушателя для слушателя.

Вы можете установить свойство autoStartup на false, чтобы предотвратить запуск контейнера.

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