У меня есть внешний файл свойств, настроенный в nifi.properties в nifi.variable.registry.properties. Я хочу прочитать это свойство в процессоре executeScript в python. я использовал
str(context.getProperty('URL'))
но не работает
VAR_URL = ${URL}
VAR_URL.evaluateAttributeExpressions(flowFile).getValue()
или если вы не хотите объявлять свойство для вашего процессора и уверены, что свойство где-то объявлено, вы можете использовать следующий код:
context.newPropertyValue( '${URL}' ).evaluateAttributeExpressions().getValue()
Note: don't use double quotes around
${URL}
because this expression will be processed as a groovy-string before evaluating nifi expression...
Выдает groovy.lang.MissingPropertyException: Нет такого свойства: IP.. Даже пробовал context.getProperty("${IP}").evaluateAttributeExpressions().getValue(), выдает такое же исключение
О, произошла ошибка: используйте одинарные кавычки для этой строки: context.getProperty('${IP}')....
, потому что с двойными кавычками ${}
обрабатывается как отличное выражение. С двойными кавычками это не должно работать в обоих случаях... Собираюсь изменить ответ.
как я могу использовать это в классе статического блока Const{ static String ip = context.getProperty('${IP}').evaluateAttributeExpressions().getValue();} }
в статическом блоке нет context
, если только это не static onStart(ProcessContext context){...}
метод в ExecuteGroovyScript
процессоре. Пример см. здесь: nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/…
Пробовал этот статический onStart(ProcessContext context){ Const.ip = context.newPropertyValue('${IP}').evaluateAttributeExpressions().getValue();}. Он не выдает никакой ошибки, но не возвращает значение, возвращает null
И каково значение свойства IP и где оно определено?
IP=192.168.0.0.1 находится в файле custom.properties, который настроен в nifi.properties nifi.variable.registry.properties=D:\\nifi-1.9.2\\conf\\custom.properties
Давайте продолжить обсуждение в чате.
у меня работает (нифи 1.9.1). лучше изменить путь в этом свойстве nifi.variable.registry.properties=D:\\nifi-1.9.2\\conf\\custom.properties
на этот: nifi.variable.registry.properties=./conf/custom.properties
В executescript я писал IP = context.newPropertyValue("${IP}").evaluateAttributeExpressions().getValue() для скрипта Python. Но теперь я пытаюсь сделать то же самое в executegroovyscript, это не работает. Я видел примеры, которые совпадают с приведенным выше кодом для groovy, но он не работает.