Входные разделы темы определяют уровень параллелизма, и если у вас есть операции с состоянием, такие как агрегация или объединение, состояние этих операций в sharded.Если у вас есть X входных разделов темы, вы получите X задач, каждая с одним осколком состояния.Кроме того, состояние поддерживается темой журнала изменений в Kafka с разделами X, и каждый шард использует ровно один из этих разделов.
Если вы измените количество разделов входной темы на X + 1, Kafka Streams попытается создатьЗадачи X + 1 с X хранят осколки, однако в существующей теме журнала изменений есть только X разделов.Таким образом, полное разбиение вашего приложения прерывается, и Kafka Streams не может гарантировать правильную обработку и, таким образом, отключается с ошибкой.
Также обратите внимание, что Kafka Streams предполагает, что входные данные разделены по ключу.Если вы измените количество разделов входных тем, разделение на основе хеш-функции изменится, что также может привести к неправильному выводу.
В общем, рекомендуется сначала разделить разделы на разделы, чтобы избежать этой проблемы.Если вам действительно нужно уменьшить масштаб, лучше создать новую тему с новым числом разделов и параллельно запустить копию приложения (с новым идентификатором приложения).После этого вы обновляете свои исходные приложения-производители для записи в новую тему и, наконец, закрываете старое приложение.