Случай, с которым я столкнулся, заключается в следующем: в нашем рабочем процессе все разработчики вносят изменения в dev-среду и фиксируют измененную группу процессоров PG
, экспортируя ее как шаблон XML. Другие парни удаляют старую рабочую PG
и устанавливают новую PG
из этого шаблона в тестовом (prod) -области.
Я пытался сохранить состояние процессоров Statefull этого PG
восстановить его после такой «переборки». И этот шаг легко сделать с помощью приятного NiFi REST API:
/nifi-api/processors/{id}/state Gets the state for a processor
А потом мне нужно его вернуть. Предположим, что поиск соответствующих идентификаторов GUID Porcessors уже сделан - хорошо, руководства являются новыми, но это «не кажется» проблемой. Я не могу вернуть состояние:
Я обнаружил (особенно, исследуя TestAbstractListProcessor.java
), что если у меня есть GUID процессора и помещен файл conf/state/<proc-guid>
со специальным форматированным содержимым, например: param={json-params}
затем после того, как Первый (и только первый) процессор запустит migrates
свое состояние из этого файла (а затем удалит его). Второй вариант, который я нашел, - это непосредственно поместить состояние CLUSTER (мне нужны только процессоры CLUSTER statefull) в путь Zookeeper /nifi/components/<guid>
.
Но есть проблема - это не работает вообще после изменение свойств процессора. Поэтому я даже не могу создать Процессор, изменить ( исходное установить) его состояние, снабдить conf/state/<proc-guid>
(или установить /nifi/components/<guid>
) и запустить в первый раз. Код (например, AbstractListProcessor.java
) видит, что произошли некоторые изменения свойств, и отбрасывает уже прочитанное состояние.
Как правильно перенести состояние CLUSTE процессора NiFi в случай обновления NiFi Processors Group? По некоторым причинам (которые я еще не понял) API-интерфейс NiFi REST позволяет только get
и clear
состояние процессоров, но не set
это:
/nifi-api/processors/{id}/state/clear-requests Clears the state for a processor
But there is no set-state API