Весенний облачный поток — Функциональный поставщик не опрашивает

#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";
        };
    }
}