{"id":37567,"date":"2019-10-31T22:18:22","date_gmt":"2019-10-31T19:18:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\/"},"modified":"2019-10-31T22:18:22","modified_gmt":"2019-10-31T19:18:22","slug":"apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","title":{"rendered":"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>\u00davod<\/h3>\n<p><\/p>\n<p>Na mojej s\u00fa\u010dasnej pracovnej poz\u00edcii som sa musel obozn\u00e1mi\u0165 s touto technol\u00f3giou. Za\u010dnem s mal\u00fdm pozad\u00edm. Na \u010fal\u0161om m\u00edtingu n\u00e1m t\u00edm povedal, \u017ee mus\u00edme vyvin\u00fa\u0165 integr\u00e1ciu s <em>zn\u00e1mym syst\u00e9mom<\/em>. Pod integr\u00e1ciou sa rozumelo, \u017ee tento zn\u00e1my syst\u00e9m n\u00e1m bude posiela\u0165 po\u017eiadavky cez HTTP na konkr\u00e9tny koncov\u00fd bod, a my, ako to m\u00f4\u017ee by\u0165 prekvapuj\u00face, budeme posiela\u0165 sp\u00e4\u0165 odpovede vo forme SOAP spr\u00e1vy. Zd\u00e1 sa, \u017ee je to v\u0161etko jednoduch\u00e9 a trivi\u00e1lne. Z toho vypl\u00fdva, \u017ee treba...<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h3>\u00daloha<\/h3>\n<p><\/p>\n<p>Vytvori\u0165 3 slu\u017eby. Prv\u00e1 z nich je Slu\u017eba aktualiz\u00e1cie DB. T\u00e1to slu\u017eba, po prijat\u00ed nov\u00fdch \u00fadajov zo strany syst\u00e9mu, aktualizuje \u00fadaje v datab\u00e1ze a generuje ak\u00fdsi s\u00fabor vo form\u00e1te CSV, ktor\u00fd sa pren\u00e1\u0161a do nasleduj\u00faceho syst\u00e9mu. N\u00e1sledne sa vyvol\u00e1va koncov\u00fd bod druhej slu\u017eby \u2013 Slu\u017eby transportu cez FTP, ktor\u00e1 prij\u00edma odoslan\u00fd s\u00fabor, validuje ho a uklad\u00e1 do s\u00faborov\u00e9ho \u00falo\u017eiska cez FTP. Tretia slu\u017eba \u2013 Slu\u017eba prenosu \u00fadajov pre spotrebite\u013ea, pracuje asynchr\u00f3nne s prv\u00fdmi dvoma. Prij\u00edma po\u017eiadavku od vonkaj\u0161ieho syst\u00e9mu na z\u00edskanie s\u00faboru, o ktorom sa hovorilo vy\u0161\u0161ie, berie hotov\u00fd s\u00fabor odpovede, modifikuje ho (aktualizuje polia id, description, linkToFile) a posiela odpove\u010f vo forme SOAP spr\u00e1vy. Teda v celku vyzer\u00e1 situ\u00e1cia takto: prv\u00e9 dve slu\u017eby za\u010d\u00ednaj\u00fa svoju pr\u00e1cu len vtedy, ke\u010f pr\u00eddu \u00fadaje na aktualiz\u00e1ciu. Tretia slu\u017eba funguje nepretr\u017eite, preto\u017ee je ve\u013ea spotrebite\u013eov inform\u00e1ci\u00ed, pribli\u017ene 1000 po\u017eiadaviek na prijatie \u00fadajov za min\u00fatu. Slu\u017eby s\u00fa neust\u00e1le dostupn\u00e9 a ich in\u0161tancie sa nach\u00e1dzaj\u00fa v r\u00f4znych prostrediach, ako s\u00fa test, demo, pre-prod a prod. Ni\u017e\u0161ie je zn\u00e1zornen\u00e1 sch\u00e9ma pr\u00e1ce t\u00fdchto slu\u017eieb. Hne\u010f vysvetl\u00edm, \u017ee niektor\u00e9 detaily s\u00fa zjednodu\u0161en\u00e9 na vyhnutie sa zbyto\u010dnej zlo\u017eitosti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/1edca5d5e917d8ac55ac96e892e816dd.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"tehnicheskoe-uglublenie\">Technick\u00e9 preh\u013abenie<\/h3>\n<p><\/p>\n<p>Pri pl\u00e1novan\u00ed rie\u0161enia \u00falohy sme sa najprv rozhodli vytvori\u0165 aplik\u00e1cie v jazyku Java s pou\u017eit\u00edm Spring frameworku, vyva\u017eova\u010da za\u0165a\u017eenia Nginx, datab\u00e1zy Postgres a \u010fal\u0161\u00edch technick\u00fdch a menej technick\u00fdch vec\u00ed. Ke\u010f\u017ee \u010das na spracovanie technick\u00e9ho rie\u0161enia umo\u017e\u0148oval zv\u00e1\u017ei\u0165 aj in\u00e9 pr\u00edstupy k tejto \u00falohe, n\u00e1\u0161 poh\u013ead sa obr\u00e1til na m\u00f3dnu technol\u00f3giu Apache NIFI v ur\u010dit\u00fdch kruhoch. Hne\u010f poviem, \u017ee t\u00e1to technol\u00f3gia n\u00e1m umo\u017enila v\u0161imn\u00fa\u0165 si tieto 3 slu\u017eby. V tomto \u010dl\u00e1nku bude op\u00edsan\u00fd v\u00fdvoj slu\u017eby na prenos s\u00faborov a slu\u017eby na prenos \u00fadajov k spotrebite\u013eovi, av\u0161ak ak sa \u010dl\u00e1nok zap\u00e1\u010di, nap\u00ed\u0161em aj o slu\u017ebe na aktualiz\u00e1ciu \u00fadajov v datab\u00e1ze.<\/p>\n<p><\/p>\n<h3 id=\"chto-eto-takoe\">\u010co to je<\/h3>\n<p><\/p>\n<p>NIFI predstavuje distribuovan\u00fa architekt\u00faru pre r\u00fdchle paraleln\u00e9 nahr\u00e1vanie a spracovanie \u00fadajov, mno\u017estvo pluginov pre zdroje a transform\u00e1cie, spravovanie verzi\u00ed konfigur\u00e1ci\u00ed a mnoho \u010fal\u0161ieho. Pr\u00edjemn\u00fdm bonusom je, \u017ee je ve\u013emi jednoduch\u00fd na pou\u017e\u00edvanie. Trivi\u00e1lne procesy, ako getFile, sendHttpRequest a in\u00e9, mo\u017eno zobrazi\u0165 ako \u0161tvorce. Ka\u017ed\u00fd \u0161tvorec predstavuje ur\u010dit\u00fd proces, ktor\u00e9ho interakciu je mo\u017en\u00e9 vidie\u0165 na obr\u00e1zku ni\u017e\u0161ie. Podrobnej\u0161ia dokument\u00e1cia o interakcii a nastaven\u00ed procesov je nap\u00edsan\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/nifi.apache.org\/docs.html\">tu<\/a><\/noindex> , pre t\u00fdch, ktor\u00ed hovoria po rusky \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.arenadata.io\/ads\/UserNIFI\/index.html\">tu<\/a><\/noindex>. V dokument\u00e1cii je skvele pop\u00edsan\u00e9, ako rozbalit a spusti\u0165 NIFI, ako aj, ako vytvori\u0165 procesy, teda \u0161tvorce.<br \/>\nMy\u0161lienka nap\u00edsa\u0165 \u010dl\u00e1nok vznikla po dlh\u00fdch h\u013eadan\u00ed a \u0161trukt\u00farovan\u00ed z\u00edskan\u00fdch inform\u00e1ci\u00ed do nie\u010doho zrozumite\u013en\u00e9ho, ako aj z t\u00fa\u017eby trochu u\u013eah\u010di\u0165 \u017eivot bud\u00facim v\u00fdvoj\u00e1rom.<\/p>\n<p><\/p>\n<h3 id=\"primer\">Pr\u00edklad<\/h3>\n<p><\/p>\n<p>Prezentovali sme pr\u00edklad interakcie \u0161tvorcov. Celkov\u00e1 sch\u00e9ma je dos\u0165 jednoduch\u00e1: prij\u00edmame HTTP po\u017eiadavku (teoreticky s s\u00faborom v tele po\u017eiadavky. Na demon\u0161tr\u00e1ciu mo\u017enost\u00ed NIFI, v tomto pr\u00edklade po\u017eiadavka sp\u00fa\u0161\u0165a proces z\u00edskavania s\u00faboru z lok\u00e1lnej FX), n\u00e1sledne posielame sp\u00e4\u0165 odpove\u010f, \u017ee po\u017eiadavka bola prijat\u00e1, paralelne sa sp\u00fa\u0161\u0165a proces z\u00edskavania s\u00faboru z FX a \u010falej proces presunu cez FTP do FX. Je potrebn\u00e9 zd\u00f4razni\u0165, \u017ee procesy spolu interaguj\u00fa prostredn\u00edctvom takzvan\u00e9ho flowFile. Toto je z\u00e1kladn\u00e1 entita v NIFI, ktor\u00e1 uchov\u00e1va atrib\u00faty a obsah. Obsah s\u00fa d\u00e1ta, ktor\u00e9 s\u00fa prezentovan\u00e9 ako s\u00fabor pr\u00fadu. To znamen\u00e1, ak ste prijali s\u00fabor z jedn\u00e9ho \u0161tvorca a pren\u00e1\u0161ate ho do druh\u00e9ho, obsahom bude v\u00e1\u0161 s\u00fabor.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/2649a29dcc9155ae7734db44fc6d3f9a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ako m\u00f4\u017eete vidie\u0165 \u2014 na tomto obr\u00e1zku je zn\u00e1zornen\u00fd celkov\u00fd proces. HandleHttpRequest \u2014 prij\u00edma po\u017eiadavky, ReplaceText \u2014 generuje telo odpovede, HandleHttpResponse \u2014 poskytuje odpove\u010f. FetchFile \u2014 z\u00edskava s\u00fabor z \u00falo\u017eiska a odovzd\u00e1va ho \u0161tvorcu PutSftp \u2014 umiest\u0148uje tento s\u00fabor na FTP na zadan\u00fa adresu. Teraz podrobnej\u0161ie o tomto procese. <\/p>\n<p><\/p>\n<p>V tomto pr\u00edpade \u2014 request je v\u0161emu za\u010diatok. Pozrime sa na jeho konfigura\u010dn\u00e9 parametre. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/cf93a09a10ed9aebaae2c10b93619658.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nTu je v\u0161etko dos\u0165 trivi\u00e1lne, okrem StandartHttpContextMap \u2014 to je ak\u00fdsi servis, ktor\u00fd umo\u017e\u0148uje posiela\u0165 a prij\u00edma\u0165 po\u017eiadavky. Podrobnej\u0161ie a dokonca s pr\u00edkladmi si m\u00f4\u017eete pozrie\u0165 \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/ddewaele.github.io\/http-communication-with-apache-nifi\/\">tu<\/a><\/noindex><\/p>\n<p>\u010ealej sa pozrieme na konfigura\u010dn\u00e9 parametre \u0161tvorca ReplaceText. Zamerajte sa na ReplacementValue \u2014 to je to, \u010do sa vr\u00e1ti pou\u017e\u00edvate\u013eovi ako odpove\u010f. V nastaveniach m\u00f4\u017eete regulova\u0165 \u00farove\u0148 logovania, logy si m\u00f4\u017eete pozrie\u0165 {kam sme rozbalili nifi}\/nifi-1.9.2\/logs, tam s\u00fa tie\u017e parametre failure\/success \u2014 na z\u00e1klade t\u00fdchto parametrov m\u00f4\u017eete regulova\u0165 proces ako celok. T.j., v pr\u00edpade \u00faspe\u0161n\u00e9ho spracovania textu sa spust\u00ed proces odosielania odpovede pou\u017e\u00edvate\u013eovi, a v inom pr\u00edpade jednoducho zalogujeme ne\u00faspe\u0161n\u00fd proces. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/97341fd7f6ea34a219a16c2c732a8062.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vo vlastnostiach HandleHttpResponse nie je ni\u010d zauj\u00edmav\u00e9, okrem statusu pri \u00faspe\u0161nom vytvoren\u00ed odpovede. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/6082c84f81274927fdfbd20378cc252c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>S po\u017eiadavkou a odpove\u010fou sme si objasnili \u2014 prejdeme \u010falej k z\u00edskavaniu s\u00faboru a jeho umiestneniu na FTP server. FetchFile \u2014 z\u00edskava s\u00fabor pod\u013ea cesty uvedenej v nastaveniach a odovzd\u00e1va ho do nasleduj\u00faceho procesu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/d1368879e13a223404a53ab623ae4079.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A \u010falej \u0161tvorec PutSftp \u2014 umiest\u0148uje s\u00fabor do \u00falo\u017eiska s\u00faborov. Parametre konfigur\u00e1cie si m\u00f4\u017eeme pozrie\u0165 ni\u017e\u0161ie.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/c22648f39bb0ad4e7209911e614d3edf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Je potrebn\u00e9 si uvedomi\u0165, \u017ee ka\u017ed\u00fd \u0161tvorec je samostatn\u00fd proces, ktor\u00fd mus\u00ed by\u0165 spusten\u00fd. Presk\u00famali sme ten najjednoduch\u0161\u00ed pr\u00edklad, ktor\u00fd si nevy\u017eaduje \u017eiadnu zlo\u017eit\u00fa prisp\u00f4sobenie. Teraz sa pozrieme na proces, ktor\u00fd je o nie\u010do zlo\u017eitej\u0161\u00ed, kde si trochu poskriptujeme na groovoch. <\/p>\n<p><\/p>\n<h3 id=\"bolee-slozhnyy-primer\">Zlo\u017eitej\u0161\u00ed pr\u00edklad<\/h3>\n<p><\/p>\n<p>Slu\u017eba prenosu \u00fadajov pre spotrebite\u013ea sa uk\u00e1zala ako o nie\u010do zlo\u017eitej\u0161ia v d\u00f4sledku procesu modifik\u00e1cie SOAP spr\u00e1vy. Celkov\u00fd proces je zn\u00e1zornen\u00fd na obr\u00e1zku ni\u017e\u0161ie.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/c48aa08c030cc252f9e53ce877329701.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tu nie je my\u0161lienka pr\u00edli\u0161 zlo\u017eit\u00e1: prijali sme po\u017eiadavku od spotrebite\u013ea, \u017ee potrebuje \u00fadaje, poslali sme odpove\u010f, \u017ee sme dostali spr\u00e1vu, spustili sme proces na\u010d\u00edtania s\u00faboru odpovede, potom sme ho upravili s ur\u010dit\u00fa logikou, po \u010dom sme odovzdali s\u00fabor spotrebite\u013eovi vo forme SOAP spr\u00e1vy na server. <\/p>\n<p><\/p>\n<p>Mysl\u00edm, \u017ee nem\u00e1 zmysel znovu opisova\u0165 tie \u0161tvorce, ktor\u00e9 sme videli vy\u0161\u0161ie \u2014 prejdime rovno na nov\u00e9. Ak potrebujete upravi\u0165 ak\u00fdko\u013evek s\u00fabor a be\u017en\u00e9 \u0161tvorce ako ReplaceText nevyhovuj\u00fa, budete musie\u0165 nap\u00edsa\u0165 vlastn\u00fd skript. To je mo\u017en\u00e9 vykona\u0165 pomocou \u0161tvorca ExecuteGroogyScript. Jeho nastavenia s\u00fa uveden\u00e9 ni\u017e\u0161ie.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/42d6691cf608b1620774426eae7b7027.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Existuj\u00fa dva sp\u00f4soby, ako na\u010d\u00edta\u0165 skript do tohto bloku. Prv\u00fd \u2014 nahran\u00edm s\u00faboru so skriptom. Druh\u00fd \u2014 vlo\u017een\u00edm skriptu do scriptBody. Pokia\u013e viem, blok executeScript podporuje nieko\u013eko programovac\u00edch jazykov \u2014 jedn\u00fdm z nich je groovy. Oklamem java v\u00fdvoj\u00e1rov \u2014 na javu nie je mo\u017en\u00e9 p\u00edsa\u0165 skripty v tak\u00fdchto blokoch. Pre t\u00fdch, ktor\u00ed ve\u013emi t\u00fa\u017eia \u2014 je potrebn\u00e9 vytvori\u0165 svoj vlastn\u00fd prisp\u00f4soben\u00fd blok a prida\u0165 ho do syst\u00e9mu NIFI. Cel\u00fd tento proces si vy\u017eaduje dos\u0165 dlh\u00e9 tance s bubnom, ktor\u00fdm sa nebudeme v r\u00e1mci tohto \u010dl\u00e1nku zaobera\u0165. Vybrala som jazyk groovy. Ni\u017e\u0161ie je uveden\u00fd testovac\u00ed skript, ktor\u00fd jednoducho inkrement\u00e1lne aktualizuje id v SOAP spr\u00e1ve. D\u00f4le\u017eit\u00e9 je poznamena\u0165, \u017ee beriete s\u00fabor z flowFile, aktualizujete ho a nesmiete zabudn\u00fa\u0165, \u017ee ho treba, aktualizovan\u00fd, vr\u00e1ti\u0165 sp\u00e4\u0165. Rovnako je potrebn\u00e9 poznamena\u0165, \u017ee nie v\u0161etky kni\u017enice s\u00fa pripojen\u00e9. M\u00f4\u017ee sa sta\u0165, \u017ee v\u00e1m nakoniec bude treba importova\u0165 jednu z kni\u017en\u00edc. \u010eal\u0161ou nev\u00fdhodou je, \u017ee skript v tomto bloku sa pomerne \u0165a\u017eko lad\u00ed. Existuje sp\u00f4sob, ako sa pripoji\u0165 k JVM NIFI a za\u010da\u0165 proces ladenia. Osobne som spustila svoju lok\u00e1lnu aplik\u00e1ciu a simulovala z\u00edskavanie s\u00faboru zo rel\u00e1cie. Laden\u00edm som sa tie\u017e zaoberala lok\u00e1lne. Chyby, ktor\u00e9 sa objavia pri nahr\u00e1van\u00ed skriptu, sa dos\u0165 jednoducho googlia a p\u00ed\u0161u sa samotn\u00fdm NIFI do logu.<\/p>\n<p><\/p>\n<pre><code class=\"java\">import org.apache.commons.io.IOUtils\nimport groovy.xml.XmlUtil\nimport java.nio.charset.*\nimport groovy.xml.StreamingMarkupBuilder\n\ndef flowFile = session.get()\nif (!flowFile) return\ntry {\n    flowFile = session.write(flowFile, { inputStream, outputStream -&gt;\n        String result = IOUtils.toString(inputStream, \"UTF-8\");\n        def recordIn = new XmlSlurper().parseText(result)\n        def element = recordIn.depthFirst().find {\n            it.name() == 'id'\n        }\n\n        def newId = Integer.parseInt(element.toString()) + 1\n        def recordOut = new XmlSlurper().parseText(result)\n        recordOut.Body.ClientMessage.RequestMessage.RequestContent.content.MessagePrimaryContent.ResponseBody.id = newId\n\n        def res = new StreamingMarkupBuilder().bind { mkp.yield recordOut }.toString()\n        outputStream.write(res.getBytes(StandardCharsets.UTF_8))\n} as StreamCallback)\n     session.transfer(flowFile, REL_SUCCESS)\n}\ncatch(Exception e) {\n    log.error(\"Chyba po\u010das spracovania validate.groovy\", e)\n    session.transfer(flowFile, REL_FAILURE)\n}<\/code><\/pre>\n<p><\/p>\n<p>Vlastne na tomto kon\u010d\u00ed prisp\u00f4sobenie bloku. Aktualizovan\u00fd s\u00fabor sa \u010falej pren\u00e1\u0161a do bloku, ktor\u00fd sa zaober\u00e1 odosielan\u00edm s\u00faboru na server. Ni\u017e\u0161ie s\u00fa uveden\u00e9 nastavenia tohto bloku.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/706c53d8deaf3d1ef47bd337e639197a.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Opisujeme met\u00f3du, ktorou bude odosielan\u00e9 SOAP spr\u00e1vy. Nap\u00ed\u0161eme, kam. \u010ealej je potrebn\u00e9 uvies\u0165, \u017ee ide skuto\u010dne o SOAP.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/7206bc2a1c66a0204c0589daf35fd328.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Prid\u00e1vame nieko\u013eko vlastnost\u00ed, ako je host a akcia (soapAction). Ulo\u017e\u00edme a skontrolujeme. Podrobnej\u0161ie inform\u00e1cie o tom, ako posiela\u0165 SOAP po\u017eiadavky, n\u00e1jdete. <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/49457764\/nifi-how-to-use-invokehttp-processor-with-soap\/49565048\">tu<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Presk\u00famali sme nieko\u013eko mo\u017enost\u00ed vyu\u017eitia procesov NIFI. Ako interaguj\u00fa a ak\u00fd je ich skuto\u010dn\u00fd pr\u00ednos. Prezentovan\u00e9 pr\u00edklady s\u00fa testovacie a trochu sa l\u00ed\u0161ia od toho, \u010do sa skuto\u010dne pou\u017e\u00edva v praxi. D\u00fafam, \u017ee tento \u010dl\u00e1nok bude pre v\u00fdvoj\u00e1rov trochu u\u017eito\u010dn\u00fd. \u010eakujem za pozornos\u0165. Ak m\u00e1te nejak\u00e9 ot\u00e1zky, p\u00ed\u0161te. Pok\u00fasim sa odpoveda\u0165.<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/465299\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438. \u041d\u0430 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u043c \u043c\u0438\u0442\u0438\u043d\u0433\u0435, \u043d\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044e \u0441 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439. \u041f\u043e\u0434 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043c \u0441\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 HTTP \u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0435\u043d\u0434\u043f\u043e\u0438\u043d\u0442, \u0430 \u043c\u044b, \u043a\u0430\u043a \u044d\u0442\u043e \u043d\u0438 \u0441\u0442\u0440\u0430\u043d\u043d\u043e, \u0441\u043b\u0430\u0442\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28196,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-37567","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Apache NIFI \u2014 \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:18:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:18:22+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Apache NIFI \u2014 Kr\u00e1tky preh\u013ead mo\u017enost\u00ed v praxi | ProHoster","description":"\u00davod Tak sa stalo, \u017ee na mojom aktu\u00e1lnom pracovisku som sa musel obozn\u00e1mi\u0165 s touto technol\u00f3giou. Za\u010dnem s malou predhistorikou.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Apache NIFI \u2014 \u041a\u0440\u0430\u0442\u043a\u0438\u0439 \u043e\u0431\u0437\u043e\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster","og:description":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0422\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u043d\u0430 \u043c\u043e\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439. \u041d\u0430\u0447\u043d\u0443 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u0438.","og:url":"https:\/\/prohoster.info\/sk\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:18:22+00:00","article:modified_time":"2019-10-31T19:18:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37567","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 18:24:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:24:24","updated":"2026-01-23 18:24:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/37567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=37567"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/37567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/28196"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=37567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=37567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=37567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}