Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

Hōʻike

Ma koʻu wahi hana i kēia manawa, pono wau e kamaʻāina me kēia ʻenehana. E hoʻomaka wau me kahi kāʻei liʻiliʻi. Ma ka hālāwai aʻe, ua haʻi ʻia kā mākou hui e pono mākou e hana i ka hoʻohui ʻana me ʻōnaehana ʻike ʻia. Ma ka hoʻohui ʻana, ua manaʻo ʻia e hoʻouna mai kēia ʻōnaehana kaulana iā mākou i nā noi ma o HTTP i kahi kikoʻī kikoʻī, a ʻo mākou, he mea kupanaha, e hoʻihoʻi i nā pane ma ke ʻano o kahi leka SOAP. He mea maʻalahi nā mea a pau. Mai kēia mea e pono ai ʻoe ...

Nń Pahuhopu

Hana i 3 mau lawelawe. ʻO ka mea mua o lākou ʻo ka Pūnaewele Hoʻohou Pūnaewele. ʻO kēia lawelawe, ke hōʻea mai ka ʻikepili hou mai kahi ʻōnaehana ʻaoʻao ʻekolu, hōʻano hou i ka ʻikepili i loko o ka waihona a hana i kahi faila i ka format CSV e hoʻoili iā ia i ka ʻōnaehana aʻe. Kapa ʻia ka hope o ka lawelawe ʻelua - ʻo ka FTP Transport Service, ka mea i loaʻa i ka faila i hoʻoili ʻia, hōʻoia ʻia, a waiho i loko o ka waihona waihona ma o FTP. ʻO ke kolu o ka lawelawe, ʻo ka lawelawe hoʻoili data mea kūʻai aku, hana like ʻole me nā mea mua ʻelua. Loaʻa iā ia kahi noi mai kahi ʻōnaehana waho ʻekolu e loaʻa i ka faila i kūkākūkā ʻia ma luna, lawe i ka faila pane mākaukau, hoʻololi iā ia (hōʻano hou i ka id, wehewehe, linkToFile kahua) a hoʻouna i ka pane ma ke ʻano o kahi leka SOAP. ʻO ia hoʻi, ke kiʻi holoʻokoʻa penei: hoʻomaka nā lawelawe ʻelua i kā lākou hana wale nō ke hiki mai ka ʻikepili no ka hoʻonui ʻana. Ke hana mau nei ka lawelawe ʻekolu no ka mea he nui nā mea kūʻai aku o ka ʻike, e pili ana i nā noi 1000 no ka ʻikepili i kēlā me kēia minuke. Loaʻa nā lawelawe i nā manawa a pau a loaʻa kā lākou mau manawa i nā wahi like ʻole, e like me ka hoʻāʻo, demo, pre-production a me prod. Aia ma lalo kahi kiʻi o ka hana o kēia mau lawelawe. E wehewehe koke wau ua maʻalahi kekahi mau kikoʻī e pale aku i ka paʻakikī pono ʻole.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

Hoʻohonu ʻenehana

Ke hoʻolālā nei i kahi hopena i ka pilikia, ua hoʻoholo mua mākou e hana i nā noi ma Java me ka hoʻohana ʻana i ka Spring framework, Nginx balancer, Postgres database a me nā mea ʻenehana a ʻaʻole naʻe. Mai ka manawa e hoʻomohala ai i kahi hoʻonā ʻenehana i hiki iā mākou ke noʻonoʻo i nā ala ʻē aʻe e hoʻoponopono ai i kēia pilikia, hāʻule kā mākou maka i ka ʻenehana Apache NIFI, he mea maʻamau i kekahi mau pōʻai. E ʻōlelo koke wau ua ʻae kēia ʻenehana iā mākou e ʻike i kēia mau lawelawe 3. E wehewehe ana kēia ʻatikala i ka hoʻomohala ʻana o kahi lawelawe lawe faila a me kahi lawelawe hoʻoili ʻikepili i ka mea kūʻai aku, akā inā pono ka ʻatikala, e kākau wau e pili ana i ka lawelawe no ka hoʻonui ʻana i ka ʻikepili i ka waihona.

He aha ia?

ʻO NIFI kahi hoʻolālā hoʻolaha no ka hoʻouka ʻana a me ka hoʻoili ʻana i ka ʻikepili, ka nui o nā plugins no nā kumu a me nā loli, ka hoʻololi ʻana o nā hoʻonohonoho a me nā mea hou aku. ʻO kahi bonus maikaʻi he maʻalahi loa ia e hoʻohana. Hiki ke hōʻike ʻia nā kaʻina hana liʻiliʻi e like me getFile, sendHttpRequest a me nā mea ʻē aʻe e like me nā ʻāpana. Hōʻike kēlā me kēia huinahā i kahi kaʻina hana, hiki ke ʻike ʻia ka pilina ma ke kiʻi ma lalo. Ua kākau ʻia nā palapala kikoʻī hou aku e pili ana i nā pilina hoʻonohonoho kaʻina maanei , no ka poʻe e ʻōlelo Lūkini - maanei. Hōʻike maikaʻi ka palapala i ka wehe ʻana a me ka holo ʻana i ka NIFI, a me ke ʻano o ka hana ʻana i nā kaʻina hana, ʻike ʻia hoʻi he mau ʻāpana.
Ua hānau ʻia ka manaʻo e kākau i kahi ʻatikala ma hope o ka huli lōʻihi a me ka hoʻonohonoho ʻana i ka ʻike i loaʻa i kahi mea ʻike, a me ka makemake e hoʻomāmā iki i ke ola no nā mea hoʻomohala e hiki mai ana.

Pākuhi:

Noʻonoʻo ʻia kahi laʻana o ka pili ʻana o nā ʻāpana me kekahi. He mea maʻalahi ka hoʻolālā maʻamau: Loaʻa iā mākou kahi noi HTTP (Ma ke kumumanaʻo, me kahi faila i loko o ke kino o ka noi. ), a laila hoʻouna mākou i kahi pane i loaʻa ka noi, e like me ke kaʻina hana o ka loaʻa ʻana o kahi faila mai FH a laila ke kaʻina o ka neʻe ʻana ma o FTP i FH. He mea pono e ho'ākāka i nā kaʻina hana e pili ana kekahi i kekahi ma o ka mea i kapa ʻia ʻo flowFile. ʻO kēia ka waihona kumu ma NIFI e mālama i nā ʻano a me nā ʻike. ʻO ka ʻikepili ka ʻikepili i hōʻike ʻia e ka faila kahawai. ʻO ia hoʻi, inā loaʻa iā ʻoe kahi faila mai kahi huinaha a hoʻololi iā ia i kahi ʻē aʻe, ʻo ia kāu faila.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

E like me kāu e ʻike ai, hōʻike kēia kiʻi i ke kaʻina hana maʻamau. HandleHttpRequest - ʻae i nā noi, ReplaceText - hoʻopuka i kahi kino pane, HandleHttpResponse - hoʻouna i kahi pane. FetchFile - loaʻa i kahi faila mai kahi waihona waihona, hoʻoili iā ia i ka square PutSftp - kau i kēia faila ma FTP, ma ka helu wahi. I kēia manawa hou e pili ana i kēia kaʻina hana.

I kēia hihia, ʻo ka noi ka hoʻomaka o nā mea a pau. E nānā kākou i kāna mau ʻāpana hoʻonohonoho.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

He mea liʻiliʻi loa nā mea a pau ma ʻaneʻi me ka StandardHttpContextMap - he ʻano lawelawe kēia e hiki ai iā ʻoe ke hoʻouna a loaʻa i nā noi. Ma nā kikoʻī hou aku a me nā laʻana, hiki iā ʻoe ke ʻike - maanei

A laila, e nānā kākou i nā ʻāpana hoʻonohonoho ReplaceText o ka huinahā. Pono e hoʻolohe i ReplacementValue - ʻo ia ka mea e hoʻihoʻi ʻia i ka mea hoʻohana ma ke ʻano o ka pane. Ma nā hoʻonohonoho hiki iā ʻoe ke hoʻololi i ke kiʻekiʻe o ka hoʻopaʻa inoa ʻana, hiki iā ʻoe ke ʻike i nā lāʻau {kahi āu i wehe ai i ka nifi}/nifi-1.9.2/logs, aia kekahi mau ʻāpana hemahema / kūleʻa - ma muli o kēia mau ʻāpana hiki iā ʻoe ke hoʻoponopono i ke kaʻina holoʻokoʻa. . ʻO ia hoʻi, i ka hihia o ka hoʻoponopono kikokikona kūleʻa, e kāhea ʻia ke kaʻina o ka hoʻouna ʻana i kahi pane i ka mea hoʻohana, a ma kahi hihia ʻē aʻe mākou e hoʻopaʻa inoa i ke kaʻina hana ʻole.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

ʻAʻohe mea hoihoi loa i nā waiwai HandleHttpResponse koe wale ke kūlana i ka wā i hana ʻia ai kahi pane.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

Ua hoʻokaʻawale mākou i ka noi a me ka pane - e neʻe mākou i ka loaʻa ʻana o ka faila a kau iā ia ma ka kikowaena FTP. FetchFile - loaʻa i kahi faila ma ke ala i kuhikuhi ʻia i nā hoʻonohonoho a hāʻawi iā ia i ke kaʻina hana aʻe.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

A laila ka PutSftp square - kau i ka faila i loko o ka waihona waihona. Hiki iā mākou ke ʻike i nā ʻāpana hoʻonohonoho ma lalo.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

Pono e hoʻolohe i ka ʻoiaʻiʻo o kēlā me kēia square kahi kaʻina kaʻawale e pono e hoʻomaka. Ua nānā mākou i ka hiʻohiʻona maʻalahi ʻaʻole koi i kahi hoʻonohonoho paʻakikī. Ma hope aʻe, e nānā mākou i ke kaʻina hana iʻoi aku ka paʻakikī, kahi e kākau ai mākou i kahi liʻiliʻi ma nā'ōpuʻu.

ʻOi aku ka laʻana paʻakikī

Ua lilo ka lawelawe hoʻoili ʻikepili i ka mea kūʻai aku i mea paʻakikī iki ma muli o ke kaʻina hana o ka hoʻololi ʻana i ka leka SOAP. Hōʻike ʻia ke kaʻina hana maʻamau ma ke kiʻi ma lalo.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

Eia ka manaʻo ʻaʻole paʻakikī loa: ua loaʻa iā mākou kahi noi mai ka mea kūʻai aku e pono ai ʻo ia i ka ʻikepili, hoʻouna i kahi pane i loaʻa iā ia kahi leka, hoʻomaka i ke kaʻina o ka loaʻa ʻana o ka faila pane, a laila hoʻoponopono iā ia me kahi loina, a laila. ua hoʻoili i ka faila i ka mea kūʻai aku ma ke ʻano o kahi leka SOAP i ke kikowaena.

Manaʻo wau ʻaʻole pono e wehewehe hou i kēlā mau ʻāpana a mākou i ʻike ai ma luna - e neʻe pololei i nā mea hou. Inā pono ʻoe e hoʻoponopono i kekahi faila a ʻaʻole kūpono nā ʻano pahu ReplaceText maʻamau, pono ʻoe e kākau i kāu palapala ponoʻī. Hiki ke hana i kēia me ka hoʻohana ʻana i ka ExecuteGroogyScript square. Hōʻike ʻia kāna mau hoʻonohonoho ma lalo nei.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

ʻElua mau koho no ka hoʻouka ʻana i ka palapala i loko o kēia huinaha. ʻO ka mea mua ma ka hoʻoiho ʻana i kahi faila me kahi palapala. ʻO ka lua ma ka hoʻokomo ʻana i kahi palapala i loko o scriptBody. E like me kaʻu i ʻike ai, kākoʻo ka executeScript square i nā ʻōlelo he nui - ʻo kekahi o lākou he groovy. E hōʻeha wau i nā mea hoʻomohala java - ʻaʻole hiki iā ʻoe ke kākau i nā palapala ma java ma ia mau ʻāpana. No ka poʻe makemake maoli, pono ʻoe e hana i kāu square maʻamau a hoʻohui iā ia i ka ʻōnaehana NIFI. Hoʻopili ʻia kēia hana holoʻokoʻa me kahi hula lōʻihi me kahi pahu kani, ʻaʻole mākou e hana i kēia ʻatikala. Ua koho au i ka ʻōlelo groovy. Aia ma lalo kahi hōʻike hōʻike e hoʻohou hou i ka id ma kahi leka SOAP. He mea nui e hoʻomaopopo. Lawe ʻoe i ka faila mai flowFile a hoʻohou iā ia, mai poina pono ʻoe e hoʻihoʻi i laila, hoʻonui. Pono nō hoʻi e ʻike ʻaʻole i hoʻokomo ʻia nā hale waihona puke a pau. Pono paha ʻoe e hoʻokomo i kekahi o nā libs. ʻO kekahi ʻaoʻao ʻē aʻe ʻo ia ka paʻakikī o ka hōʻailona ma kēia huinahā. Aia kahi ala e hoʻopili ai i ka NIFI JVM a hoʻomaka i ka hana debugging. ʻO wau iho, ua hoʻomaka wau i kahi noi kūloko a hoʻohālikelike i ka loaʻa ʻana o kahi faila mai ka hālāwai. Ua hana hoʻi au i ka debugging kūloko. ʻO nā hewa i ʻike ʻia i ka wā e hoʻouka ai i kahi palapala maʻalahi iā Google a kākau ʻia e NIFI ponoʻī i ka log.

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)
}

ʻOiaʻiʻo, ʻo ia kahi e pau ai ka hana maʻamau o ka square. A laila, hoʻoili ʻia ka faila hou i ka square, nona ke kuleana no ka hoʻouna ʻana i ka faila i ke kikowaena. Aia ma lalo nā hoʻonohonoho no kēia huinaha.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

Hōʻike mākou i ke ala e hoʻouna ʻia ai kahi leka SOAP. Kākau mākou i hea. A laila pono ʻoe e hōʻike ʻo SOAP kēia.

Apache NIFI - He ʻike pōkole o nā hiʻohiʻona i ka hoʻomaʻamaʻa

Hoʻohui i kekahi mau waiwai e like me ka host a me ka hana (soapAction). Mālama mākou a nānā. Hiki iā ʻoe ke ʻike i nā kikoʻī hou aku e pili ana i ka hoʻouna ʻana i nā noi SOAP maanei

Ua nānā mākou i kekahi mau koho no ka hoʻohana ʻana i nā kaʻina hana NIFI. Pehea lākou e launa pū ai a he aha kā lākou pono maoli? ʻO nā hiʻohiʻona i manaʻo ʻia he mau hoʻāʻo a ʻokoʻa iki mai ka mea i hana maoli ʻia i ka hakakā. Manaʻo wau e lilo kēia ʻatikala i mea pono no nā mea hoʻomohala. Mahalo no kou noonoo. Inā he mau nīnau kāu, e kākau. E ho'āʻo wau e pane.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka