InvalidStateStoreException
может иметь разные причины, поэтому трудно ответить на ваш вопрос без дополнительного контекста.
Если потоковое приложение с состоянием запускается с 6 потоками на одном узле, будет ливозникла исключительная ситуация?
Может.
Существует ли какой-либо процесс, которому необходимо следовать, если запущено потоковое приложение с состоянием, запущенное на узле 1, использующем определенную тему?работать на другом узле?
Нет.
Если потоковое приложение с сохранением состояния запускается на 2 узлах и если возникает указанное выше исключение, будет ли потоковое приложение завершено немедленно?
Зависит от того, где сгенерировано исключение:
- Либо соответствующий
StreamThread
умрет, но приложение не завершится автоматически.Вы должны зарегистрировать обработчик необработанных исключений в экземпляре KafkaStreams
и реагировать на умирающий поток с помощью пользовательского кода (например, завершение приложения). - Если он генерируется из
KafkaStreams
с использованием интерактивных запросов, StreamThread
не будет затронуто.
Где можно обнаружить это исключение в блоке try-catch?
Обычно да, особенно если вы ссылаетесь на интерактивные запросы
Если мы добавим режим сна на 10 минут, будет ли магазин автоматически переведен в действительное состояние?
Если вы ссылаетесь на функцию интерактивных запросов, то сон не является хорошимстратегия.Есть несколько причин для исключения, и вы должны реагировать соответственно:
- хранилище не локальное, а на другом узле: это можно выяснить, проверив метаданные хранилища.
- storeеще не готов: вы можете подождать, пока магазин не будет готов - лучше всего зарегистрировать прослушиватель восстановления (подробности смотрите в документации), чтобы получить информацию о завершении восстановления, и вы можете повторить запрос к хранилищу.
Обновление
По сути, мне было интересно, если мы сохраним весь объем потребления темы на одном узле, можно ли избежать повторного построения хранилища из внутренней темы, если-балансировка происходит из-за того, что один из потоков выходит из строя / завершается?
Да (для случая не EOS).Другие потоки будут обнаруживать локальное хранилище и повторно использовать его.
StateRestoreCallback ИЛИ StateRestoreListener
Да, это StateRestoreListener
.Вы бы реализовали StateRestoreCallback
, только если вы напишите собственное хранилище состояний.