Как отложить инициализацию Spring Cloud Stream StreamListener?

У меня проблема с инициализацией StreamListener. Не могу решить свою проблему.

Я использую в своем проекте Spring Cloud Stream Kafka и Spring Cache. Spring Cache инициализируется после метода start () SmartLifeCycle. Но StreamListener начинает потреблять данные раньше, чем метод start () SmartLifeCycle. Из-за этого я не могу завершить инициализацию кеша до того, как StreamListener начнет потреблять данные, и это вызывает у меня проблемы.

Есть ли способ отложить обработку StreamListener или отложить инициализацию bean-компонента StreamListener?


comment
Я не мог найти для этого решения. Следует ли мне изменить StreamListener на PolledConsumer? Если это так, на этот раз я не могу использовать записи как пакетные (список), хотя я установил конфигурацию yml как пакетный режим: true. Мне удалось выполнить пакетное использование в StreamListener. В polled Consumer есть ли способ использовать пакетные данные в виде списка?   -  person omerstack    schedule 20.11.2020
comment
Подходит ли для вас приостановка и возобновление работы Потребителя? См. Пример здесь: docs.spring.io/spring-cloud-stream-binder-kafka/docs/   -  person sobychacko    schedule 20.11.2020


Ответы (1)


Вы можете установить autoStartup привязки в false и запустить привязку позже с помощью bean-объекта BindingsEndpoint.

См. этот ответ.

person Gary Russell    schedule 20.11.2020
comment
Проблема решается конфигурацией autostartup = false и применением пусковой точки BindingsEndpoint актуатора. Большое спасибо. - person omerstack; 23.11.2020