{"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\/cs\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","title":{"rendered":"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled mo\u017enost\u00ed v praxi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h3>\u00davod<\/h3>\n<p><\/p>\n<p>Na m\u00e9m sou\u010dasn\u00e9m pracovi\u0161ti jsem m\u011bl p\u0159\u00edle\u017eitost se s touto technologi\u00ed sezn\u00e1mit. Za\u010dnu kr\u00e1tk\u00fdm historick\u00fdm pozad\u00edm. Na jednom z meeting\u016f n\u00e1m bylo \u0159e\u010deno, \u017ee je pot\u0159eba vytvo\u0159it integraci s <em>zn\u00e1m\u00fdm syst\u00e9mem<\/em>. Pod integrac\u00ed se rozum\u011blo, \u017ee n\u00e1m tento zn\u00e1m\u00fd syst\u00e9m bude odes\u00edlat po\u017eadavky prost\u0159ednictv\u00edm HTTP na ur\u010ditou koncovou adresu, a my, i kdy\u017e to zn\u00ed podivn\u011b, budeme zas\u00edlat zp\u011bt odpov\u011bdi ve form\u011b SOAP zpr\u00e1v. Vypad\u00e1 to docela jednodu\u0161e a trivi\u00e1ln\u011b. Z toho vypl\u00fdv\u00e1, \u017ee je t\u0159eba\u2026<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h3>\u00dakol<\/h3>\n<p><\/p>\n<p>Vytvo\u0159it 3 slu\u017eby. Prvn\u00ed z nich je Slu\u017eba pro aktualizaci datab\u00e1ze. Tato slu\u017eba p\u0159i p\u0159\u00edjmu nov\u00fdch dat ze t\u0159et\u00ed strany aktualizuje \u00fadaje v datab\u00e1zi a generuje soubor ve form\u00e1tu CSV pro jeho p\u0159ed\u00e1n\u00ed dal\u0161\u00edmu syst\u00e9mu. Vol\u00e1 se rozhran\u00ed druh\u00e9 slu\u017eby \u2014 Slu\u017eby pro transport p\u0159es FTP, kter\u00e1 p\u0159ij\u00edm\u00e1 p\u0159edan\u00fd soubor, ov\u011b\u0159uje ho a ukl\u00e1d\u00e1 do \u00falo\u017ei\u0161t\u011b soubor\u016f p\u0159es FTP. T\u0159et\u00ed slu\u017eba \u2014 Slu\u017eba pro p\u0159ed\u00e1v\u00e1n\u00ed dat koncov\u00e9mu u\u017eivateli, pracuje asynchronn\u011b s prvn\u00edmi dv\u011bma. P\u0159ij\u00edm\u00e1 dotaz od extern\u00ed t\u0159et\u00ed strany na soubor, o kter\u00e9m jsme hovo\u0159ili d\u0159\u00edve, bere hotov\u00fd soubor odpov\u011bdi, modifikuje ho (aktualizuje pole id, description, linkToFile) a pos\u00edl\u00e1 odpov\u011b\u010f ve form\u00e1tu SOAP zpr\u00e1vy. Celkov\u011b se situace m\u00e1 takto: prvn\u00ed dv\u011b slu\u017eby za\u010d\u00ednaj\u00ed svou pr\u00e1ci teprve, kdy\u017e p\u0159ijde data pro aktualizaci. T\u0159et\u00ed slu\u017eba pracuje neust\u00e1le, proto\u017ee je mnoho u\u017eivatel\u016f informac\u00ed, p\u0159ibli\u017en\u011b 1000 dotaz\u016f na p\u0159\u00edjem dat za minutu. Slu\u017eby jsou k dispozici neust\u00e1le a jejich instance se nach\u00e1zej\u00ed v r\u016fzn\u00fdch prost\u0159ed\u00edch, jako je test, demo, p\u0159edprod a produkce. N\u00ed\u017ee je uvedena sch\u00e9ma pr\u00e1ce t\u011bchto slu\u017eeb. Ihned si dovoluji objasnit, \u017ee n\u011bkter\u00e9 detaily jsou zjednodu\u0161eny, aby se p\u0159ede\u0161lo zbyte\u010dn\u00e9 slo\u017eitosti.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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 prohlouben\u00ed<\/h3>\n<p><\/p>\n<p>P\u0159i pl\u00e1nov\u00e1n\u00ed \u0159e\u0161en\u00ed \u00falohy jsme nejprve zva\u017eovali vytvo\u0159en\u00ed aplikac\u00ed v Jav\u011b s vyu\u017eit\u00edm frameworku Spring, vyva\u017eova\u010de Nginx, datab\u00e1ze Postgres a dal\u0161\u00edch technick\u00fdch i netechnick\u00fdch aspekt\u016f. Vzhledem k tomu, \u017ee \u010das na vypracov\u00e1n\u00ed technick\u00e9ho \u0159e\u0161en\u00ed dovoloval zva\u017eovat r\u016fzn\u00e9 p\u0159\u00edstupy k t\u00e9to \u00faloze, zam\u011b\u0159ili jsme se na popul\u00e1rn\u00ed technologii Apache NIFI v ur\u010dit\u00fdch kruz\u00edch. Hned \u0159\u00edk\u00e1m, \u017ee tato technologie n\u00e1m umo\u017enila identifikovat tyto 3 slu\u017eby. V tomto \u010dl\u00e1nku bude pops\u00e1na v\u00fdvoj slu\u017eby pro p\u0159enos soubor\u016f a slu\u017eby pro p\u0159ed\u00e1v\u00e1n\u00ed dat kone\u010dn\u00e9mu u\u017eivateli, ale pokud \u010dl\u00e1nek zaujme, nap\u00ed\u0161u tak\u00e9 o slu\u017eb\u011b pro aktualizaci dat v datab\u00e1zi.<\/p>\n<p><\/p>\n<h3 id=\"chto-eto-takoe\">Co to je<\/h3>\n<p><\/p>\n<p>NIFI p\u0159edstavuje distribuovanou architekturu pro rychl\u00e9 paraleln\u00ed na\u010d\u00edt\u00e1n\u00ed a zpracov\u00e1n\u00ed dat, velk\u00e9 mno\u017estv\u00ed plugin\u016f pro zdroje a transformace, verzov\u00e1n\u00ed konfigurac\u00ed a mnoho dal\u0161\u00edho. P\u0159\u00edjemn\u00fdm bonusem je, \u017ee je velmi jednoduch\u00fd na pou\u017e\u00edv\u00e1n\u00ed. Trivi\u00e1ln\u00ed procesy, jako je getFile, sendHttpRequest a dal\u0161\u00ed, lze vizualizovat jako \u010dtverce. Ka\u017ed\u00fd \u010dtverec p\u0159edstavuje ur\u010dit\u00fd proces, jeho\u017e interakci lze vid\u011bt na obr\u00e1zku n\u00ed\u017ee. Podrobn\u011bj\u0161\u00ed dokumentace o interakci a nastaven\u00ed proces\u016f je naps\u00e1na <noindex><a rel=\"nofollow\" href=\"https:\/\/nifi.apache.org\/docs.html\">zde<\/a><\/noindex> , pro ty, kte\u0159\u00ed mluv\u00ed rusky \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.arenadata.io\/ads\/UserNIFI\/index.html\">zde<\/a><\/noindex>. V dokumentaci je skv\u011ble pops\u00e1no, jak rozbalit a spustit NIFI, a tak\u00e9, jak vytv\u00e1\u0159et procesy, kter\u00e9 jsou tak\u00e9 \u010dtverce<br \/>\nN\u00e1pad napsat \u010dl\u00e1nek se zrodil po dlouh\u00e9m hled\u00e1n\u00ed a strukturov\u00e1n\u00ed z\u00edskan\u00fdch informac\u00ed do n\u011b\u010deho smyslupln\u00e9ho, stejn\u011b jako touha trochu usnadnit \u017eivot budouc\u00edm v\u00fdvoj\u00e1\u0159\u016fm.<\/p>\n<p><\/p>\n<h3 id=\"primer\">P\u0159\u00edklad<\/h3>\n<p><\/p>\n<p>Byly prozkoum\u00e1ny p\u0159\u00edklady, jak spolu \u010dtverce interaguj\u00ed. Celkov\u00e1 sch\u00e9ma je docela jednoduch\u00e1: p\u0159ijmeme HTTP dotaz (teoreticky s souborem v t\u011ble dotazu. Pro demonstraci mo\u017enost\u00ed NIFI, v tomto p\u0159\u00edkladu dotaz spou\u0161t\u00ed proces z\u00edsk\u00e1n\u00ed souboru z m\u00edstn\u00edho \u00falo\u017ei\u0161t\u011b), pot\u00e9 ode\u0161leme zp\u011bt odpov\u011b\u010f, \u017ee dotaz byl p\u0159ijat, sou\u010dasn\u011b se spou\u0161t\u00ed proces z\u00edsk\u00e1n\u00ed souboru z \u00falo\u017ei\u0161t\u011b a d\u00e1le proces jeho p\u0159esunut\u00ed p\u0159es FTP do \u00falo\u017ei\u0161t\u011b. Je t\u0159eba vysv\u011btlit, \u017ee procesy spolu komunikuj\u00ed prost\u0159ednictv\u00edm takzvan\u00e9ho flowFile. Toto je z\u00e1kladn\u00ed entita v NIFI, kter\u00e1 uchov\u00e1v\u00e1 atributy a obsah. Obsah \u2014 jsou data, kter\u00e1 jsou reprezentov\u00e1na souborem toku. To znamen\u00e1, \u017ee pokud z\u00edsk\u00e1te soubor z jednoho \u010dtverce a p\u0159ed\u00e1v\u00e1te ho do druh\u00e9ho, obsahem bude v\u00e1\u0161 soubor.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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>Jak m\u016f\u017eete vid\u011bt \u2014 na tomto obr\u00e1zku je zn\u00e1zorn\u011bn celkov\u00fd proces. HandleHttpRequest \u2014 p\u0159ij\u00edm\u00e1 dotazy, ReplaceText \u2014 generuje t\u011blo odpov\u011bdi, HandleHttpResponse \u2014 vrac\u00ed odpov\u011b\u010f. FetchFile \u2014 z\u00edsk\u00e1v\u00e1 soubor z \u00falo\u017ei\u0161t\u011b a p\u0159ed\u00e1v\u00e1 ho \u010dtverci PutSftp \u2014 ukl\u00e1d\u00e1 tento soubor na FTP na ur\u010denou adresu. Nyn\u00ed se pod\u00edvejme podrobn\u011bji na tento proces. <\/p>\n<p><\/p>\n<p>V tomto p\u0159\u00edpad\u011b \u2014 dotaz je v\u0161emu za\u010d\u00e1tkem. Pod\u00edvejme se na jeho konfigura\u010dn\u00ed parametry. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled mo\u017enost\u00ed v praxi\" src=\"\/wp-content\/uploads\/2019\/08\/cf93a09a10ed9aebaae2c10b93619658.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nZde je to celkem trivi\u00e1ln\u00ed s v\u00fdjimkou StandartHttpContextMap \u2014 je to jist\u00e1 slu\u017eba, kter\u00e1 umo\u017e\u0148uje odes\u00edlat a p\u0159ij\u00edmat dotazy. Podrobn\u011bj\u0161\u00ed informace a dokonce i s p\u0159\u00edklady si m\u016f\u017eete zobrazit \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/ddewaele.github.io\/http-communication-with-apache-nifi\/\">zde<\/a><\/noindex><\/p>\n<p>D\u00e1le se pod\u00edvejme na konfigura\u010dn\u00ed parametry \u010dtverce ReplaceText. Je d\u016fle\u017eit\u00e9 v\u011bnovat pozornost ReplacementValue \u2014 to je to, co se vr\u00e1t\u00ed u\u017eivateli ve form\u011b odpov\u011bdi. V nastaven\u00ed lze regulovat \u00farove\u0148 logov\u00e1n\u00ed, logy si m\u016f\u017eete prohl\u00e9dnout {kam jsme rozbalili nifi}\/nifi-1.9.2\/logs, tam jsou tak\u00e9 parametry failure\/success \u2014 na z\u00e1klad\u011b t\u011bchto parametr\u016f lze regulovat cel\u00fd proces. Tedy v p\u0159\u00edpad\u011b \u00fasp\u011b\u0161n\u00e9ho zpracov\u00e1n\u00ed textu \u2014 vyvol\u00e1 se proces odesl\u00e1n\u00ed odpov\u011bdi u\u017eivateli, a v opa\u010dn\u00e9m p\u0159\u00edpad\u011b prost\u011b zaznamen\u00e1me ne\u00fasp\u011b\u0161n\u00fd proces. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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>Ve vlastnostech HandleHttpResponse nen\u00ed nic zaj\u00edmav\u00e9ho, krom\u011b stavu p\u0159i \u00fasp\u011b\u0161n\u00e9m vytvo\u0159en\u00ed odpov\u011bdi. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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 dotazem a odpov\u011bd\u00ed jsme se sezn\u00e1mili \u2014 poj\u010fme d\u00e1l k z\u00edsk\u00e1n\u00ed souboru a jeho um\u00edst\u011bn\u00ed na FTP server. FetchFile \u2014 z\u00edsk\u00e1v\u00e1 soubor podle cesty uveden\u00e9 v nastaven\u00ed a p\u0159ed\u00e1v\u00e1 ho do dal\u0161\u00edho procesu. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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 d\u00e1le \u010dtverec PutSftp - vkl\u00e1d\u00e1 soubor do \u00falo\u017ei\u0161t\u011b. Konfigura\u010dn\u00ed parametry vid\u00edme n\u00ed\u017ee.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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 t\u0159eba si v\u0161imnout, \u017ee ka\u017ed\u00fd \u010dtverec je samostatn\u00fd proces, kter\u00fd mus\u00ed b\u00fdt spu\u0161t\u011bn. Prozkoumali jsme nejjednodu\u0161\u0161\u00ed p\u0159\u00edklad, kter\u00fd nevy\u017eaduje \u017e\u00e1dnou slo\u017eitou p\u0159izp\u016fsoben\u00ed. D\u00e1le se pod\u00edv\u00e1me na proces, kter\u00fd je trochu slo\u017eit\u011bj\u0161\u00ed, kde si p\u00e1r v\u011bc\u00ed nap\u00ed\u0161eme v groovy. <\/p>\n<p><\/p>\n<h3 id=\"bolee-slozhnyy-primer\">Slo\u017eit\u011bj\u0161\u00ed p\u0159\u00edklad<\/h3>\n<p><\/p>\n<p>Slu\u017eba p\u0159enosu dat k z\u00e1kazn\u00edkovi se uk\u00e1zala jako o n\u011bco slo\u017eit\u011bj\u0161\u00ed d\u00edky procesu modifikace zpr\u00e1vy SOAP. Celkov\u00fd proces je zn\u00e1zorn\u011bn na obr\u00e1zku n\u00ed\u017ee.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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>Zde je my\u0161lenka tak\u00e9 docela jednoduch\u00e1: obdr\u017eeli jsme po\u017eadavek od z\u00e1kazn\u00edka, \u017ee pot\u0159ebuje data, poslali jsme odpov\u011b\u010f, \u017ee jsme obdr\u017eeli zpr\u00e1vu, spustili jsme proces z\u00edsk\u00e1n\u00ed odpov\u011bdn\u00edho souboru, d\u00e1le jsme jej upravili podle ur\u010dit\u00e9 logiky a pot\u00e9 jsme p\u0159edali soubor z\u00e1kazn\u00edkovi ve form\u011b zpr\u00e1vy SOAP na server. <\/p>\n<p><\/p>\n<p>Mysl\u00edm, \u017ee nen\u00ed t\u0159eba znovu popisovat \u010dtverce, kter\u00e9 jsme vid\u011bli v\u00fd\u0161e - p\u0159ejdeme rovnou k nov\u00fdm. Pokud pot\u0159ebujete upravit jak\u00fdkoli soubor a b\u011b\u017en\u00e9 \u010dtverce typu ReplaceText nejsou vhodn\u00e9, budete muset napsat sv\u016fj skript. To lze prov\u00e9st pomoc\u00ed \u010dtverce ExecuteGroogyScript. Jeho nastaven\u00ed jsou uvedena n\u00ed\u017ee.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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\u00ed dva zp\u016fsoby, jak na\u010d\u00edst skript do tohoto bloku. Prvn\u00ed je pomoc\u00ed na\u010dten\u00ed souboru se skriptem. Druh\u00fd je vlo\u017een\u00edm skriptu do scriptBody. Dle m\u00fdch informac\u00ed blok executeScript podporuje n\u011bkolik programovac\u00edch jazyk\u016f, jedn\u00edm z nich je groovy. Zklamu v\u00fdvoj\u00e1\u0159e v jav\u011b \u2014 ve jav\u011b nelze ps\u00e1t skripty v t\u011bchto bloc\u00edch. Pro ty, kdo si to opravdu p\u0159ej\u00ed, je t\u0159eba vytvo\u0159it sv\u016fj vlastn\u00ed vlastn\u00ed blok a vlo\u017eit ho do syst\u00e9mu NIFI. Cel\u00e1 tato operace je doprov\u00e1zena pom\u011brn\u011b dlouh\u00fdmi tane\u010dky s bubnem, kter\u00fdmi se v r\u00e1mci tohoto \u010dl\u00e1nku nezab\u00fdv\u00e1me. Zvolila jsem jazyk groovy. N\u00ed\u017ee je uveden testovac\u00ed skript, kter\u00fd jednodu\u0161e inkrement\u00e1ln\u011b aktualizuje id v SOAP zpr\u00e1v\u011b. Je d\u016fle\u017eit\u00e9 poznamenat, \u017ee si berete soubor z flowFile, aktualizujete ho a nesm\u00edte zapomenout, \u017ee ho mus\u00edte vr\u00e1tit zp\u011bt. Tak\u00e9 je t\u0159eba poznamenat, \u017ee nejsou p\u0159ipojeny v\u0161echny knihovny. M\u016f\u017ee se st\u00e1t, \u017ee budete muset importovat jednu z knihoven. Dal\u0161\u00edm nev\u00fdhodou je, \u017ee skript v tomto bloku je docela t\u011b\u017eko ladit. Existuje zp\u016fsob, jak se p\u0159ipojit k JVM NIFI a za\u010d\u00edt proces lad\u011bn\u00ed. Osobn\u011b jsem spou\u0161t\u011bla aplikaci lok\u00e1ln\u011b a imitovala jsem z\u00edsk\u00e1n\u00ed souboru ze session. Lad\u011bn\u00edm jsem se tak\u00e9 zab\u00fdvala lok\u00e1ln\u011b. Chyby, kter\u00e9 se p\u0159i na\u010d\u00edt\u00e1n\u00ed skriptu objevuj\u00ed, se daj\u00ed snadno hledat na Googlu a NIFI je zapisuje 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(\"Error during processing of validate.groovy\", e)\n    session.transfer(flowFile, REL_FAILURE)\n}<\/code><\/pre>\n<p><\/p>\n<p>T\u00edmto vlastn\u011b kon\u010d\u00ed p\u0159izp\u016fsoben\u00ed bloku. Aktualizovan\u00fd soubor je pak p\u0159ed\u00e1n bloku, kter\u00fd se zab\u00fdv\u00e1 odes\u00edl\u00e1n\u00edm souboru na server. N\u00ed\u017ee jsou uvedeny nastaven\u00ed tohoto bloku.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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>Popisujeme metodu, kterou bude zas\u00edl\u00e1no SOAP zpr\u00e1va. Uv\u00e1d\u00edme, kam. D\u00e1le je t\u0159eba uv\u00e9st, \u017ee se jedn\u00e1 o SOAP.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Apache NIFI \u2014 Stru\u010dn\u00fd p\u0159ehled 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>P\u0159id\u00e1v\u00e1me n\u011bkolik vlastnost\u00ed, jako je hostitel a akce (soapAction). Ukl\u00e1d\u00e1me a kontrolujeme. Podrobn\u011bji o tom, jak pos\u00edlat SOAP po\u017eadavky, se m\u016f\u017eete pod\u00edvat. <noindex><a rel=\"nofollow\" href=\"https:\/\/stackoverflow.com\/questions\/49457764\/nifi-how-to-use-invokehttp-processor-with-soap\/49565048\">tady<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Prozkoumali jsme n\u011bkolik mo\u017enost\u00ed vyu\u017eit\u00ed proces\u016f NIFI. Jak spolu interaguj\u00ed a jak\u00fd maj\u00ed skute\u010dn\u00fd p\u0159\u00ednos. Uveden\u00e9 p\u0159\u00edklady jsou testovac\u00ed a m\u00edrn\u011b se li\u0161\u00ed od toho, co se doopravdy pou\u017e\u00edv\u00e1 v produkci. Douf\u00e1m, \u017ee tento \u010dl\u00e1nek bude pro v\u00fdvoj\u00e1\u0159e trochu u\u017eite\u010dn\u00fd. D\u011bkuji za pozornost. Pokud m\u00e1te n\u011bjak\u00e9 dotazy \u2013 pi\u0161te. Pokus\u00edm se odpov\u011bd\u011bt.<\/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.3 - 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\/cs\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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 \u2013 Kr\u00e1tk\u00fd p\u0159ehled mo\u017enost\u00ed v praxi | ProHoster","description":"\u00davod. Tak se stalo, \u017ee jsem se na sv\u00e9 aktu\u00e1ln\u00ed pracovn\u00ed pozici musel sezn\u00e1mit s touto technologi\u00ed. Za\u010dnu malou p\u0159edhistori\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/apache-nifi-kratkij-obzor-vozmozhnostej-na-praktike","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/37567","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=37567"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/37567\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/28196"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=37567"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=37567"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=37567"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}