2016-09-29 3 views
1

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

Есть простой тест потока, чтобы попытаться узнать Nifi, где у меня есть: GetMongo -> LogAttributes -> Поставить слабину

-----------------------LOG1----------------------- 
Standard FlowFile Attributes 
Key: 'entryDate' 
     Value: 'Wed Sep 28 23:58:36 GMT 2016' 
Key: 'lineageStartDate' 
     Value: 'Wed Sep 28 23:58:36 GMT 2016' 
Key: 'fileSize' 
     Value: '70' 
FlowFile Attribute Map Content 
Key: 'filename' 
     Value: '43546945658800' 
Key: 'path' 
     Value: './' 
Key: 'uuid' 
     Value: 'd1e10623-0e90-44af-a620-6bed9776ed62' 
-----------------------LOG1----------------------- 
{ "_id" : { "$oid" : "57ec27ec35a0759d54fb465d" }, "keyA" : "valueA" } 

В выражении putSlack для теста я пытался:

${flowfile.content} 
${message} 
${payload} 
${msg} 
${flowfile-content} 
${content} 

ответ

5

Не существует языка выражения, который обращается к содержимому файла потока. Атрибуты и контент намеренно хранятся очень по-разному, чтобы облегчить перемещение файла потока, который может представлять большую полезную нагрузку. Язык выражений работает только с атрибутами.

Процессор ExtractText может использоваться для извлечения всего содержимого Flow File в атрибут, просто имейте в виду, что это должно быть сделано только тогда, когда вы знаете, что в содержимом не будет проблем с установкой памяти.

+0

Чтобы добавить это, руководство Apache NiFi Expression Language (EL) описывает все функции EL и как их использовать: https://nifi.apache.org/docs/nifi-docs/html/expression-language -guide.html – JDP10101

+0

@ Bryan вы можете немного разработать его, пожалуйста, как взять все содержимое в атрибуте, а также рассказать, как вернуть его снова. Пожалуйста, ответьте на ваш вопрос. Спасибо –

+0

Если вы используете процессор ExtractText и добавляете определяемый пользователем свойство, имя определяемого пользователем свойства станет атрибутом файла потока, а значение свойства - это регулярное выражение для применения к контенту. Итак, foo =. * Выберет весь контент и поместит его в атрибут foo. –

Смежные вопросы