#java #spring #spring-cloud-stream #spring-cloud-function
Вопрос:
В Spring Cloud Stream я использовал функциональную модель и создал поставщика для создания событий. Согласно документации, я ожидаю, что этот поставщик будет вызываться по расписанию, но этого не происходит. Он вызывается один раз при создании боба и больше никогда. Я был бы признателен за любую помощь в выяснении причин.
EventSource.java (Поставщик):
@Component
@Slf4j
public class EventSource {
@Bean
public Supplier<String> generateEvents() {
log.debug("creating an event to publish to Kafka");
return () -> "Hi I'm an event";
}
}
приложение.yml:
spring:
cloud:
function:
definition: generateEvents
stream:
bindings:
generateEvents-out-0:
destination: eventsTopic
Я знаю, что подключаюсь к Кафке, потому что тема eventsTopic
создается при запуске. Приложение Cloud Stream работает, но ничего не делает.
Комментарии:
1. Я только что протестировал его, и все работает так, как ожидалось. Существует также множество тестов для проверки. Возможно, вы можете опубликовать небольшой проект, воспроизводящий проблему, где-нибудь на GitHub, где мы сможем взглянуть?
2.
debug
Журнал в определении компонента будет вызываться только один раз; вам нужно переместить его внутрь лямбды, если вы хотите регистрировать каждое событие.
Ответ №1:
Вы можете следовать этому коду, и я надеюсь, что вы решите проблему:
@Configuration
@Slf4j
public class EventSource {
@Bean
public Supplier<String> generateEvents() {
return () -> {
log.debug("creating an event to publish to Kafka");
return "Hi I'm an event";
};
}
}