Как определить, находится ли приложение Kafka Streams в «запущенном» состоянии? - PullRequest
0 голосов
/ 17 мая 2019

Учитывая недавно запущенное приложение Kafka Streams, как можно надежно определить, что оно достигло состояния «РАБОТА»? Это в контексте тестовой программы, которая запускает одно или несколько потоковых приложений и должна дождаться их запуска, прежде чем отправлять тестовые сообщения.

Я знаю о методе .setStateListener, но мне интересно, есть ли способ определения этого состояния из вне процесса приложения. Я думал, что это может быть представлено как метрика jmx, но я не смог найти его в VisualVM

1 Ответ

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

Метод слушателя состояний - это путь. Нет другого готового способа добиться того, чего вы хотите.

Тем не менее, вы можете сделать следующее, например:

  1. Предоставьте простую «проверку работоспособности» (или «запуск проверки да / нет») в приложении Kafka Streams, например, через конечную точку REST (используйте любой знакомый вам инструмент REST).
  2. Проверка работоспособности может быть основана на встроенном слушателе состояний Kafka Streams, о котором вы уже знаете.
  3. Затем ваша тестовая программа может удаленно запрашивать конечные точки проверки работоспособности вашего приложения Kafka Streams, чтобы определить, все ли они запущены и работают.

Конечно, вы можете использовать другие способы сообщить о готовности приложения Kafka Streams. Идея конечной точки REST в (1) является лишь одним примером.

  • Вы также можете позволить приложению Kafka Streams записать свой статус готовности в тему Kafka, и ваша тестовая программа подпишется на эту тему, чтобы определить, когда все приложения будут готовы.
  • Другим вариантом будет предоставление пользовательской метрики JMX в ваших приложениях Kafka Streams, к которой ваша тестовая программа сможет затем получить доступ.
...