Реализовать счетчик как атрибут потока файла в Nifi - PullRequest
0 голосов
/ 18 марта 2020

Используя Nifi, я хочу обработать ошибки процессора.

Если процессор отправляет файл потока на ссылку сбоя, я хочу отправить его обратно x раз на процессор, который не смог его обработать.

Для этого я хотел реализовать счетчик в атрибутах flowfiles. Однако я сталкиваюсь с двумя проблемами

  • Как проверить, содержит ли файл потока атрибут counter?
  • Как увеличить атрибут counter, если он существует?

Пока у меня есть следующий поток:

current flow

И я застрял на процессоре счетчика обновлений. Я не понимаю, как мне этого добиться.

Атрибут counter не существует при первом входе в файл потока. Я хочу проверить, существует ли он, если нет, добавить его в файл потока. Когда это происходит позже во время выполнения, если оно существует, я хочу увеличить его. Как это возможно?

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Используйте это выражение.

${counter:replaceNull(0):plus(1)}

Если атрибут counter не существует, будет создано значение с 1, а если атрибут counter существует, он будет обновлен +1 .

0 голосов
/ 18 марта 2020

UpdateCounter счетчик обновлений процессора и используется только для функции мониторинга, мы не можем получить к ним доступ с помощью языка выражений.

  • Чтобы проверить значение счетчика, нажмите в правом верхнем углу меню гамбургера> счетчики

Как проверить или добавить в файл потока?

Использовать UpdateAttribute обработчик и добавьте новое свойство с именем:

counter

${counter:isNull():not():ifElse('${counter:plus(1)}','${literal("0")}')}

С помощью приведенного выше выражения мы проверяем атрибут counter notnull

  • Истина, затем увеличение значения атрибута на 1.

  • Ложное добавление атрибута counter со значением 0


Взгляните на этот поток , относящийся к аналогичному сценарию использования, и вы также можете использовать updateattribute процессор, хранящий опцию состояния также локально.

...