fampidirana
Sendra ny toerana iasako ankehitriny dia tsy maintsy nifankazatra tamin'io teknolojia io. Hatomboko amin'ny fototra kely. Tamin'ny fivoriana manaraka dia nilazana ny ekipanay fa mila mamorona integration izahay rafitra fantatra. Amin'ny alàlan'ny fampidirana dia midika fa ity rafitra fanta-daza ity dia handefa fangatahana amin'ny alàlan'ny HTTP mankany amin'ny teboka iray manokana, ary izahay, mahagaga, dia handefa valiny amin'ny endrika hafatra SOAP. Toa tsotra sy tsy misy dikany ny zava-drehetra. Avy amin'izany dia mila ...
asa
Mamorona serivisy 3. Ny voalohany amin'izy ireo dia ny Database Update Service. Ity serivisy ity, rehefa tonga avy amin'ny rafitra antoko fahatelo ny angona vaovao, dia manavao ny angon-drakitra ao amin'ny angon-drakitra ary mamorona rakitra amin'ny endrika CSV mba hamindrana azy amin'ny rafitra manaraka. Ny fiafaran'ny serivisy faharoa dia antsoina hoe - FTP Transport Service, izay mandray ny rakitra nafindra, manamarina izany, ary mametraka azy ao anaty fitehirizana rakitra amin'ny alàlan'ny FTP. Ny serivisy fahatelo, ny serivisy famindrana angon-drakitra ho an'ny mpanjifa, dia miasa tsy mifanaraka amin'ny roa voalohany. Mahazo fangatahana avy amin'ny rafitra ivelany avy amin'ny antoko fahatelo handray ny rakitra resahina etsy ambony, maka ny rakitra valiny vonona, manova azy (manavao ny id, famaritana, saha linkToFile) ary mandefa ny valiny amin'ny endrika hafatra SOAP. Izany hoe, ny sary ankapobeny dia toy izao manaraka izao: ny serivisy roa voalohany dia manomboka ny asany raha tsy rehefa tonga ny angon-drakitra momba ny fanavaozana. Ny serivisy fahatelo dia miasa tsy tapaka satria maro ny mpanjifan'ny fampahalalana, momba ny fangatahana data 1000 isa-minitra. Ny serivisy dia misy tsy tapaka ary ny trangan'izy ireo dia hita amin'ny tontolo samihafa, toy ny fitsapana, demo, mialoha ny famokarana ary ny prod. Ity ambany ity ny sarin'ny fomba fiasan'ireo serivisy ireo. Hazavaiko avy hatrany fa nohamafisina ny antsipiriany sasany mba hialana amin'ny fahasarotana tsy ilaina.
Fandalinana ara-teknika
Rehefa manomana vahaolana amin'ny olana izahay dia nanapa-kevitra ny hanao fampiharana amin'ny Java amin'ny fampiasana ny rafitra Lohataona, Nginx balancer, Postgres database ary zavatra ara-teknika hafa fa tsy ara-teknika. Hatramin'ny fotoana namolavolana vahaolana ara-teknika dia namela anay handinika fomba hafa hamahana ity olana ity, ny fijerinay dia nitodika tamin'ny teknolojia Apache NIFI, izay lamaody amin'ny faribolana sasany. Lazaiko avy hatrany fa ity teknolojia ity dia namela anay nahatsikaritra ireo serivisy 3 ireo. Ity lahatsoratra ity dia mamaritra ny fivoaran'ny serivisy fitaterana rakitra sy serivisy famindrana angon-drakitra ho an'ny mpanjifa, fa raha mahasoa ny lahatsoratra dia hanoratra momba ny serivisy fanavaozana ny angona ao amin'ny tahiry aho.
Inona izany?
NIFI dia maritrano nozaraina ho an'ny fandefasana haingana sy fanodinana angon-drakitra, plugins marobe ho an'ny loharano sy fanovana, famoahana ny fanamafisana ary maro hafa. Ny bonus tsara dia ny hoe tena mora ampiasaina. Ny dingana tsy misy dikany toy ny getFile, sendHttpRequest ary ny hafa dia azo aseho ho efamira. Ny efamira tsirairay dia maneho dingana iray, ny fifandraisan'izy ireo dia azo jerena amin'ny sary etsy ambany. Nosoratana ny antontan-taratasy amin'ny antsipiriany bebe kokoa momba ny fifandraisana amin'ny fananganana dingana
Ny hevitra hanoratra lahatsoratra dia teraka taorian'ny fikarohana lava sy ny fandrafetana ny vaovao voaray ho zavatra tonga saina, ary koa ny faniriana hanamora ny fiainana ho an'ny mpamorona ho avy.
ohatra
Ohatra iray amin'ny fomba ifandraisan'ny efamira amin'ny tsirairay. Ny drafitra ankapobeny dia tsotra: Mahazo fangatahana HTTP izahay (Amin'ny teoria, misy rakitra ao amin'ny vatan'ny fangatahana. Mba hampisehoana ny fahaizan'ny NIFI, amin'ity ohatra ity dia manomboka ny dingana fandraisana rakitra avy amin'ny fitehirizana rakitra eo an-toerana ny fangatahana. ), avy eo dia mandefa valiny izahay fa voaray ny fangatahana, mifanandrify amin'ny dingana fandraisana rakitra avy amin'ny FH ary avy eo ny fizotran'ny famindrana azy amin'ny FTP mankany FH. Ilaina ny manazava fa ny dingana dia mifandray amin'ny tsirairay amin'ny alàlan'ny antsoina hoe flowFile. Ity no singa fototra ao amin'ny NIFI izay mitahiry ny toetra sy ny atiny. Ny votoaty dia ny angona asehon'ny rakitra stream. Izany hoe, raha lazaina amin'ny teny manodidina, raha mahazo rakitra avy amin'ny efamira iray ianao ary mamindra izany amin'ny iray hafa, ny atiny dia ny rakitrao.
Araka ny hitanao, ity sary ity dia mampiseho ny dingana ankapobeny. HandleHttpRequest - manaiky fangatahana, ReplaceText - mamorona vatana valiny, HandleHttpResponse - mandefa valiny. FetchFile - mandray rakitra avy amin'ny fitahirizana rakitra, mamindra azy amin'ny kianja PutSftp - mametraka ity rakitra ity amin'ny FTP, amin'ny adiresy voafaritra. Ankehitriny bebe kokoa momba ity dingana ity.
Amin'ity tranga ity, ny fangatahana no fiandohan'ny zava-drehetra. Andeha hojerentsika ny masontsivana config.
Ny zava-drehetra eto dia tsy misy dikany afa-tsy ny StandardHttpContextMap - karazana serivisy ahafahanao mandefa sy mandray fangatahana. Amin'ny antsipiriany bebe kokoa ary na dia misy ohatra aza dia azonao jerena -
Manaraka, andeha hojerentsika ny masontsivana fanitsiana ny ReplaceText amin'ny kianja. Ilaina ny mandinika ny ReplacementValue - izany no haverina amin'ny mpampiasa amin'ny endrika valiny. Ao amin'ny toe-javatra azonao atao ny manitsy ny haavon'ny logging, dia afaka mahita ny logs {izay nosokafanao nifi}/nifi-1.9.2/logs, misy ihany koa ny tsy fahombiazana/fahombiazana parameter - mifototra amin'ireo masontsivana ireo dia azonao atao ny mifehy ny dingana manontolo. . Izany hoe, amin'ny trangan-javatra mahomby amin'ny fanodinana lahatsoratra dia antsoina ny dingan'ny fandefasana valiny amin'ny mpampiasa, ary amin'ny tranga hafa dia hampiditra fotsiny ny dingana tsy nahomby.
Tsy misy zavatra mahaliana manokana ao amin'ny fananana HandleHttpResponse afa-tsy ny sata rehefa vita ny valiny.
Nandamina ny fangatahana sy ny valiny izahay - andao hiroso amin'ny fandraisana ny rakitra ary hametraka izany amin'ny mpizara FTP. FetchFile - mandray rakitra amin'ny lalana voafaritra ao amin'ny toe-javatra ary mampita izany amin'ny dingana manaraka.
Ary avy eo ny kianja PutSftp - mametraka ny rakitra ao amin'ny fitehirizana rakitra. Hitantsika eto ambany ny mari-pamantarana fanamafisana.
Tsara ny manamarika fa ny kianja tsirairay dia dingana iray tsy maintsy atomboka. Nijery ny ohatra tsotra indrindra izay tsy mitaky fanamboarana sarotra. Manaraka, hijery ny dingana sarotra kokoa isika, izay hanoratra kely amin'ny grooves.
Ohatra sarotra kokoa
Ny serivisy famindrana angon-drakitra ho an'ny mpanjifa dia nanjary sarotra kokoa noho ny dingana fanovana ny hafatra SOAP. Ny dingana ankapobeny dia aseho amin'ny sary etsy ambany.
Eto dia tsy sarotra ihany koa ny hevitra: nahazo fangatahana avy amin'ny mpanjifa izahay fa mila data izy, nandefa valiny fa naharay hafatra izy, nanomboka ny dingana fandraisana ny antontan-taratasy valiny, avy eo dia nanova izany tamin'ny lojika iray, ary avy eo namindra ny rakitra tany amin'ny mpanjifa amin'ny endrika hafatra SOAP amin'ny mpizara.
Heveriko fa tsy ilaina ny mamaritra indray ireo efamira hitantsika teo ambony ireo - andao hizotra mankany amin'ny vaovao. Raha mila manitsy rakitra ianao ary tsy mety ny efamira karazana ReplaceText mahazatra dia tsy maintsy manoratra ny scripto manokana ianao. Azo atao izany amin'ny alàlan'ny efamira ExecuteGroogyScript. Aseho eto ambany ny firafiny.
Misy safidy roa hametahana ny script amin'ity kianja ity. Ny voalohany dia ny fampidinana rakitra misy script. Ny faharoa dia amin'ny fampidirana script ao amin'ny scriptBody. Raha ny fahafantarako azy, ny kianja executeScript dia manohana fiteny maromaro - ny iray amin'izy ireo dia groovy. Handiso fanantenana ny mpamorona java aho - tsy afaka manoratra script amin'ny java amin'ny efamira toy izany ianao. Ho an'ireo izay tena maniry izany dia mila mamorona efamira manokana ianao ary ampio amin'ny rafitra NIFI. Ity hetsika manontolo ity dia miaraka amin'ny dihy lava be miaraka amin'ny ampongatapaka, izay tsy horesahina ato amin'ity lahatsoratra ity. Nifidy ny fiteny groovy aho. Ity ambany ity ny script fitsapana izay manavao tsikelikely ny id amin'ny hafatra SOAP. Zava-dehibe ny manamarika. Raisinao ny rakitra avy amin'ny flowFile ary manavao azy, aza adino fa mila averinao ao, nohavaozina. Tsara ihany koa ny manamarika fa tsy ny tranomboky rehetra no tafiditra ao. Mety hitranga fa mbola mila manafatra iray amin'ireo libs ianao. Ny lafy ratsiny iray hafa dia ny hoe ny script amin'ity kianja ity dia tena sarotra ny debug. Misy fomba hifandraisana amin'ny NIFI JVM ary manomboka ny dingana debugging. Izaho manokana dia nanangana fampiharana eo an-toerana ary nanao simulate ny fandraisana rakitra avy amin'ny session. Nanao debugging teo an-toerana ihany koa aho. Ny hadisoana miseho rehefa mametaka script dia mora amin'ny Google ary nosoratan'i NIFI mihitsy ao amin'ny 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)
}
Raha ny marina, eto no mifarana ny fanamboarana ny kianja. Avy eo, ny rakitra nohavaozina dia nafindra tany amin'ny kianja, izay tompon'andraikitra amin'ny fandefasana ny rakitra amin'ny mpizara. Ireto ambany ireto ny firafitry ny kianja.
Manoritsoritra ny fomba fampitana hafatra SOAP izahay. Manoratra izahay hoe aiza. Avy eo dia mila manondro ianao fa SOAP ity.
Manampia fananana maro toy ny mpampiantrano sy hetsika (soapAction). Mitahiry sy manamarina. Afaka mahita antsipiriany bebe kokoa momba ny fomba fandefasana fangatahana SOAP ianao
Nijery safidy maromaro izahay amin'ny fampiasana ny fizotran'ny NIFI. Ahoana ny fifandraisan'izy ireo ary inona no tena tombony azony? Ny ohatra raisina dia fitsapana ary tsy mitovy amin'ny zava-mitranga marina amin'ny ady. Manantena aho fa hahasoa kely ho an'ny mpamorona ity lahatsoratra ity. Misaotra anao noho ny fifantohanao. Raha manana fanontaniana ianao dia manorata. Hiezaka aho hamaly.
Source: www.habr.com