Apache NIFI β€” ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’Π°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ мСстС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ. Начну с нСбольшой прСдыстории. На ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ ΠΌΠΈΡ‚ΠΈΠ½Π³Π΅, нашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ сказали, Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с извСстной систСмой. Под ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ эта извСстная систСма Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌ ΡΠ»Π°Ρ‚ΡŒ запросы Ρ‡Π΅Ρ€Π΅Π· HTTP Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π΅Π½Π΄ΠΏΠΎΠΈΠ½Ρ‚, Π° ΠΌΡ‹, ΠΊΠ°ΠΊ это Π½ΠΈ странно, ΡΠ»Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π² Π²ΠΈΠ΄Π΅ SOAP сообщСния. Π’Ρ€ΠΎΠ΄Π΅ всС просто ΠΈ Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ. Из этого слСдуСт Ρ‡Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ…

Π—Π°Π΄Π°Ρ‡Π°

Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ 3 сСрвиса. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… β€” БСрвис обновлСния Π‘Π”. Π­Ρ‚ΠΎΡ‚ сСрвис, ΠΏΡ€ΠΈ поступлСнии Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· стороннСй систСмы, обновляСт Π΄Π°Π½Π½Ρ‹Π΅ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ΠΊΠΈΠΉ Ρ„Π°ΠΉΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ CSV, для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΅Π³ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ систСму. ВызываСтся Π΅Π½Π΄ΠΏΠΎΠΈΠ½Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ сСрвиса β€” БСрвиса транспортировки Ρ‡Π΅Ρ€Π΅Π· FTP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ, ΠΈ ΠΊΠ»Π°Π΄Π΅Ρ‚ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Ρ‡Π΅Ρ€Π΅Π· FTP. Π’Ρ€Π΅Ρ‚ΠΈΠΉ сСрвис β€” БСрвис ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŽ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ асинхронно с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ двумя. Он ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ запрос ΠΎΡ‚ стороннСй внСшнСй систСмы, Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ шла Ρ€Π΅Ρ‡ΡŒ Π²Ρ‹ΡˆΠ΅, Π±Π΅Ρ€Π΅Ρ‚ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΡ‚Π²Π΅Ρ‚Π°, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ (обновляСт поля id, description, linkToFile) ΠΈ посылаСт ΠΎΡ‚Π²Π΅Ρ‚ Π² Π²ΠΈΠ΄Π΅ SOAP сообщСния. Π’ Π΅ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ: ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° сСрвиса Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ для обновлСния. Π’Ρ€Π΅Ρ‚ΠΈΠΉ сСрвис Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ постоянно ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎ, порядка 1000 запросов Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ. БСрвисы доступны постоянно ΠΈ ΠΈΡ… инстанцы Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… окруТСниях, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ тСст, Π΄Π΅ΠΌΠΎ, ΠΏΡ€Π΅ΠΏΡ€ΠΎΠ΄ ΠΈ ΠΏΡ€ΠΎΠ΄. НиТС прСдставлСна схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ этих сСрвисов. Π‘Ρ€Π°Π·Ρƒ поясню, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Ρ‹ для избСТания лишнСй слоТности.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

ВСхничСскоС ΡƒΠ³Π»ΡƒΠ±Π»Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ, сначала Ρ€Π΅ΡˆΠΈΠ»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ прилоТСния Π½Π° java с использованиСм Spring framework, балансировщиком Nginx, Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… Postgres ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠΌΠΈ тСхничСскими ΠΈ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΡˆΡ‚ΡƒΠΊΠ°ΠΌΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ врСмя Π½Π° ΠΏΡ€ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ тСхничСского Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ позволяло Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ, взгляд ΡƒΠΏΠ°Π» Π½Π° ΠΌΠΎΠ΄Π½ΡƒΡŽ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΡƒΠ³Π°Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Apache NIFI. Π‘Ρ€Π°Π·Ρƒ скаТу, Ρ‡Ρ‚ΠΎ эта тСхнология ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π½Π°ΠΌ эти 3 сСрвиса. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ описана Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сСрвиса транспортировки Ρ„Π°ΠΉΠ»Π° ΠΈ сСрвиса ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŽ, ΠΎΠ΄Π½Π°ΠΊΠΎ Ссли ΡΡ‚Π°Ρ‚ΡŒΡ Π·Π°ΠΉΠ΄Π΅Ρ‚, Π½Π°ΠΏΠΈΡˆΡƒ ΠΏΡ€ΠΎ сСрвис обновлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² Π‘Π”.

Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

NIFI прСдставляСт собой Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ для быстрой ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, большоС количСство ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для источников ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, вСрсионированиС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. ΠŸΡ€ΠΈΡΡ‚Π½Ρ‹ΠΌ бонусом являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ прост Π² использовании. Π’Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ процСссы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ getFile, sendHttpRequest ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ прСдставляСт Π½Π΅ΠΊΠΈΠΉ процСсс, взаимодСйствиС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° рисункС Π½ΠΈΠΆΠ΅. Π‘ΠΎΠ»Π΅Π΅ подробная докумСнтация ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ настройкС процСссов написана здСсь , для Ρ‚Π΅Ρ… ΠΊΠΎΠΌΡƒ Π½Π° русском β€” здСсь. Π’ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ расписано ΠΊΠ°ΠΊ Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ NIFI, Π° Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ процСссы, ΠΎΠ½ΠΈ ΠΆΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹
ИдСя Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ послС ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… поисков ΠΈ структурирования ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ осознанноС, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Тизнь Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ..

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

РассмотрСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. ΠžΠ±Ρ‰Π°Ρ схСма довольно простая: ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ HTTP запрос (Π’ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ с Ρ„Π°ΠΉΠ»ΠΎΠΌ Π² Ρ‚Π΅Π»Π΅ запроса. Для дСмонстрации возмоТностСй NIFI, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ запрос стартуСт процСсс получСния Ρ„Π°ΠΉΠ»Π° ΠΈΠ· локального Π€Π₯), Π΄Π°Π»Π΅Π΅ отсылаСм ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‚, Ρ‡Ρ‚ΠΎ запрос ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ запускаСтся процСсс получСния Ρ„Π°ΠΉΠ»Π° ΠΈΠ· Π€Π₯ ΠΈ Π΄Π°Π»Π΅Π΅ процСсс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· FTP Π² Π€Π₯. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ процСссы Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой посрСдством Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ flowFile. Π­Ρ‚ΠΎ базовая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ Π² NIFI, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² сСбС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ содСрТимоС. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдставлСны Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’ Π΅ Π³Ρ€ΡƒΠ±ΠΎ говоря, Ссли Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ваш Ρ„Π°ΠΉΠ».

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ β€” Π½Π° этом рисункС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ ΠΎΠ±Ρ‰ΠΈΠΉ процСсс. HandleHttpRequest β€” ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ запросы, ReplaceText β€” Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π΅Π»ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°, HandleHttpResponse β€” ΠΎΡ‚Π΄Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚. FetchFile β€” ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρƒ PutSftp β€” ΠΊΠ»Π°Π΄Π΅Ρ‚ этот Ρ„Π°ΠΉΠ» Π½Π° FTP, ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ адрСсу. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом процСссС.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС β€” request всСму Π½Π°Ρ‡Π°Π»ΠΎ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π—Π΄Π΅ΡΡŒ всС довольно Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ StandartHttpContextMap β€” это Π½Π΅ΠΊΠΈΠΉ сСрвис ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ запросы. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈ Π΄Π°ΠΆΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ β€” здСсь

Π”Π°Π»Π΅Π΅ посмотрим ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ReplaceText ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°. Π’ Π½Π΅ΠΉ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ReplacementValue β€” это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ вСрнСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π²Π΅Ρ‚Π°. Π’ settings ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ логгирования, Π»ΠΎΠ³ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ {ΠΊΡƒΠ΄Π° распаковали nifi}/nifi-1.9.2/logs Ρ‚Π°ΠΌ ΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ failure/success β€” ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс Π² Ρ†Π΅Π»ΠΎΠΌ. Π’ Π΅ Π² случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста β€” вызовСтся процСсс ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ случаС ΠΌΡ‹ просто Π·Π°Π»ΠΎΠ³ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ процСсс.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π’ свойствах HandleHttpResponse особо Π½ΠΈΡ‡Π΅Π³ΠΎ интСрСсного Π½Π΅Ρ‚ ΠΊΡ€ΠΎΠΌΠ΅ статуса ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ создании ΠΎΡ‚Π²Π΅Ρ‚Π°.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π‘ запросом ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ β€” ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ дальшС ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ Π½Π° FTP сСрвСр. FetchFile β€” ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Π² настройках ΠΏΡƒΡ‚ΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ процСсс.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

И Π΄Π°Π»Π΅Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ PutSftp β€” ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ» Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½ΠΈΠΆΠ΅.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ β€” это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ процСсс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½. ΠœΡ‹ рассмотрСли самый простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ слоТной кастомизиции. Π”Π°Π»Π΅Π΅ рассмотрим процСсс Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС, Π³Π΄Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ попишСм Π½Π° грувях.

Π‘ΠΎΠ»Π΅Π΅ слоТный ΠΏΡ€ΠΈΠΌΠ΅Ρ€

БСрвис ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŽ получился Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС Π·Π° счСт процСсса ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ SOAP сообщСния. ΠžΠ±Ρ‰ΠΈΠΉ процСсс прСдставлСн Π½Π° рисункС Π½ΠΈΠΆΠ΅.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π—Π΄Π΅ΡΡŒ идСя Ρ‚ΠΎΠΆΠ΅ Π½Π΅ особо слоТная: ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ запрос ΠΎΡ‚ потрСбитСля, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½ΡƒΠΆΠ½Ρ‹ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ ΠΎΡ‚Π²Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ сообщСниС, запустили процСсс получСния Ρ„Π°ΠΉΠ»Π° ΠΎΡ‚Π²Π΅Ρ‚Π°, Π΄Π°Π»Π΅Π΅ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΅Π³ΠΎ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, послС Ρ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Ρ„Π°ΠΉΠ» ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡŽ Π² Π²ΠΈΠ΄Π΅ SOAP сообщСния Π½Π° сСрвСр.

Π”ΡƒΠΌΠ°ΡŽ Π½Π΅ стоит ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ Ρ‚Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π²Ρ‹ΡˆΠ΅ β€” ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ сразу ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ. Если Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ Ρ„Π°ΠΉΠ» ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Ρ‹ Ρ‚ΠΈΠΏΠ° ReplaceText Π½Π΅ подходят, Π²Π°ΠΌ придСтся ΠΏΠΈΡΠ°Ρ‚ΡŒ свой скрипт. Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° ExecuteGroogyScript. Настройки Π΅Π³ΠΎ прСдставлСны Π½ΠΈΠΆΠ΅.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ скрипта Π² этот ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ β€” это ΠΏΡƒΡ‚Π΅ΠΌ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° со скриптом. Π’Ρ‚ΠΎΡ€ΠΎΠΉ β€” вставкой скрипта Π² scriptBody. На сколько я знаю, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ executeScript ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько ЯП β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… groovy. Π Π°Π·ΠΎΡ‡Π°Ρ€ΡƒΡŽ java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² β€” Π½Π° java нСльзя ΠΏΠΈΡΠ°Ρ‚ΡŒ скрипты Π² Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°Ρ…. Для Ρ‚Π΅Ρ… ΠΊΠΎΠΌΡƒ ΠΎΡ‡Π΅Π½ΡŒ хочСтся β€” Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой кастомный ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΈ ΠΏΠΎΠ΄ΠΊΠΈΠ½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π² систСму NIFI. Вся эта опСрация сопровоТдаСтся довольно ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ‚Π°Π½Ρ†Π°ΠΌΠΈ с Π±ΡƒΠ±Π½ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… этой ΡΡ‚Π°Ρ‚ΡŒΠΈ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ. Π― Π²Ρ‹Π±Ρ€Π°Π»Π° язык groovy. НиТС прСдставлСн тСстовый скрипт ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎ обновляСт id Π² SOAP сообщСнии. Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ. Π’Ρ‹ Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈΠ· flowFile обновляСтС Π΅Π³ΠΎ, Π½Π΅ стоит Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Ρ‚ΡƒΠ΄Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ. Π’Π°ΠΊ ΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ всС-Ρ‚Π°ΠΊΠΈ придСтся ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π»ΠΈΠ±. ΠœΠΈΠ½ΡƒΡΠΎΠΌ Π΅Ρ‰Π΅ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ скрипт Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅ довольно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π΅Π±Π°ΠΆΠΈΡ‚ΡŒ. Π•ΡΡ‚ΡŒ способ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ ΠΊ JVM NIFI ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. Π›ΠΈΡ‡Π½ΠΎ я запускала Ρƒ сСбя локальноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· сСссии. ΠžΡ‚Π»Π°Π΄ΠΊΠΎΠΉ Ρ‚ΠΎΠΆΠ΅ занималась локально. Ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π»Π΅Π·Π°ΡŽΡ‚ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ скрипта довольно Π»Π΅Π³ΠΊΠΎ Π³ΡƒΠ³Π»ΡΡ‚ΡŒΡΡ ΠΈ ΠΏΠΈΡˆΡƒΡ‚ΡΡ самим NIFI Π² Π»ΠΎΠ³.

import org.apache.commons.io.IOUtils
import groovy.xml.XmlUtil
import java.nio.charset.*
import groovy.xml.StreamingMarkupBuilder

def flowFile = session.get()
if (!flowFile) return
try {
    flowFile = session.write(flowFile, { inputStream, outputStream ->
        String result = IOUtils.toString(inputStream, "UTF-8");
        def recordIn = new XmlSlurper().parseText(result)
        def element = recordIn.depthFirst().find {
            it.name() == 'id'
        }

        def newId = Integer.parseInt(element.toString()) + 1
        def recordOut = new XmlSlurper().parseText(result)
        recordOut.Body.ClientMessage.RequestMessage.RequestContent.content.MessagePrimaryContent.ResponseBody.id = newId

        def res = new StreamingMarkupBuilder().bind { mkp.yield recordOut }.toString()
        outputStream.write(res.getBytes(StandardCharsets.UTF_8))
} as StreamCallback)
     session.transfer(flowFile, REL_SUCCESS)
}
catch(Exception e) {
    log.error("Error during processing of validate.groovy", e)
    session.transfer(flowFile, REL_FAILURE)
}

БобствСнно Π½Π° этом кастомизация ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π° заканчиваСтся. Π”Π°Π»Π΅Π΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» пСрСдаСтся Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ занимаСтся посылкой Ρ„Π°ΠΉΠ»Π° Π½Π° сСрвСр. НиТС прСдставлСны настройки этого ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π°.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

ΠžΠΏΠΈΡΡ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ SOAP сообщСниС. ПишСм ΠΊΡƒΠ΄Π°. Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это ΠΈΠΌΠ΅Π½Π½ΠΎ SOAP.

Apache NIFI — ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅

ДобавляСм нСсколько свойств Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ хост ΠΈ дСйствиС(soapAction). БохраняСм, провСряСм. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΡΡ‹Π»Π°Ρ‚ΡŒ SOAP запросы ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚ΡƒΡ‚

ΠœΡ‹ рассмотрСли нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² использования процСссов NIFI. Как ΠΎΠ½ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ какая ΠΎΡ‚ Π½ΠΈΡ… Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ польза. РассмотрСнныС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ тСстовыми ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π° бою. НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. Если Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ вопросы β€” ΠΏΠΈΡˆΠΈΡ‚Π΅. ΠŸΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com