Как я могу приостановить (включить / выключить) потоковую обработку с помощью Spring Cloud Stream и Kafka Streams Binder? - PullRequest
0 голосов
/ 16 июня 2020

Я использую Spring Cloud Stream (3.0.4.RELEASE) со связывателем Kafka-Streams (3.0.0.RELEASE). Я также использую «Модель функционального программирования» (поэтому нет @StreamListener et c). Какая прекрасная техника!

Мне нужно иметь возможность приостанавливать потоковую обработку / использование новых событий в определенное время дня. Это создает «период затемнения» для событий. По окончании периода отключения я возобновлю потоковую обработку. В результате я хочу иметь возможность приостановить или включить / выключить потребителя KStream с помощью кода. Кажется, я не могу справиться с этим!

Что я пробовал до сих пор? - Использование конечной точки / actator / bindings для запуска / остановки привязок kafka-streams. Казалось, что это было недоступно для связывателя kafka-streams, только для связывателя kafka: (.

Любая помощь будет принята с благодарностью! Спасибо!

1 Ответ

0 голосов
/ 16 июня 2020

Конечные точки привязки исполнительного механизма для управления потоковой обработкой не поддерживаются из коробки для связывателя потоков Kafka. Этот вариант использования появился перед .

Если вы согласны с добавлением дополнительных тем ввода / вывода (и потенциальной задержки в зависимости от ряда факторов) перед процессором потоков Kafka, есть способ решить эту проблему. См. Добавленные комментарии здесь .

Основная идея c состоит в том, что первый процессор является простым процессором сквозной передачи, в котором он не использует Kafka Streams, а использует стандартное связующее на основе обмена сообщениями в Spring Cloud Stream. Там вы можете управлять потоком событий, используя конечные точки привязки исполнительного механизма. Выходные данные этого процессора становятся входными данными для процессора Kafkfa Streams.

Опять же, для реализации этого шаблона не требуется много кода (может быть, 3 или 4 строки), но это может повлиять на производительность в зависимости от требований и пропускной способности вашего приложения. Тем не менее, если это не вызывает беспокойства, вы можете попробовать этот шаблон.

Надеюсь, это поможет.

...