ááá˘áŤ
á áá áŁááá áľ á¨áľáŤ áŚáł á¨áá
á´áááá áá áá°ááá
áá á¨áĽáᢠá áľáá˝ áłáŤ áĽáááŤáá. á áááĽáá á°áá áĄáľáá˝á ᨠáá áá
á°áľ ááá á áĽááłááĽá á°áááŽááᢠá¨áłáá áľáááľ. áá
á°áľ áááľ áá
á áŁá á¨áłáá áľáááľ áĽáŤááá˝á á á¤á˝á˛á˛á á áŠá áá° á ááľ á¨á°áá°á á¨áá¨á¨áť ááĽáĽ ááááááᣠáĽá á ááŤáľááá áááłáŁ ááážá˝á á áśá áááĽááľ ááá áĽááááłááᢠááá ááá ááá áĽá ááá áááľáá. á¨áá
ááĽá áŤááâŚ
ááá
3 á áááááśá˝á ááá áŠ. á¨ááááŞáŤá á¨áłáłá¤á ááťáťáŤ á áááááľ ááᢠáá á áááááľ á¨áśáľá°á ááá á á˛áľ áá¨á á¨á°áá á á áá á áá¨á ááą ááľáĽ áŤááá áá¨á áŤáťá˝áá áĽá áá° ááŁáŠ áľáááľ áááľá°ááá á CSV á áá¸áľ ááá áŤáááŤáᢠá¨ááá°áá á áááááľ á¨áá¨á¨áť ááĽáĽ ááŁáá - á á¤áá˛á á áŠá áŤáá á¨áľáŤááľáááľ á áááááľ á¨á°ááááá ááá ááá áá ᣠáŤááľáá áĽá á á¤áá˛á á áŠá á ááá áá¨ááť ááľáĽ áŤá°ááááᢠáŚáľá°áá á áááááľ - áá°á ááá á¨ááἠááľá°ááá á áááááľ, á¨ááááŞáŤááš áááľ áá á ááááłá°á ááአáá°áŤá. á¨áá á¨á°áĽáŤáŤáá ááá áááá á á¨áśáľá°á ááá á¨áá áľáááľ áĽáŤá ááá áá ᣠááá á¨áá á¨ááá˝ ááá ááľáś á áťá˝ááłá (ááłáááŤáá ᣠááááŤáá ᣠá ááá áśááá ááľáŽá˝á áŤáááá) áĽá ááá˝ á a ááá áááŤá ᢠá¨áłáá áááĽááľá˘ áŤá á á á ááá, áľáá áĽáá°áá¨á°áá áá-á¨ááááŞáŤááš áááľ á áááááśá˝ áĽáŤá¸áá á¨ááááŠáľ ááááá áá¨áá á˛á°ááľ áĽáť áá. áśáľá°áá á áááááľ áŤáááá¨áĽ áá°áŤá ááááŤáąá áĽá á¨áá¨á á°á áááá˝ áľááᣠá á°áá áá° 1000 á¨áá á á¨áá¨á áĽáŤááá˝á˘ á áááááśáš áá áá áááá áĽá ááłáááťá¸á á á°ááŤáŠ á áŤáŁá˘áá˝ áá ááááᣠáááłá áá¨áŤáŁ ááłáŤáŁ ááŞááŽáľ áĽá ááŽáľá˘ á¨áłá˝ áĽááá á áááááśá˝ áĽáá´áľ áĽáá°áá አá¨ááŤáłá áĽááá ááá፠áá. á ááłááľ ááááŽá˝ á ááľááá ááľáĽáľáĽ áááŽá˝á áááľáááľ ááá áŤá áááá¸áá áá˛áŤáá ááĽáŤáŤá˘
á´áááŤá áĽáááľ
áá˝áአáááľá ááááľ áľáá áľ ááááŞáŤ á¨áá°á ááááá ᣠᨠNginx ááá ᣠᨠPostgres áłáłá¤á áĽá ááá˝ á´áááŤá áĽá á´áááŤá áŤááá áááŽá˝á á áá áá á á፠ááľáĽ áá°áá áŞáŤáá˝á áááľáŤáľ áá°áá ᢠá´áááŤá áááľá ááááááľ áá áá á á˝áá ááááłáľ ááá˝ á ááŤá¨áŚá˝á á¨áááľ á áľá˝áá áááŽ, ááá Apache NIFI á´áááá áá áá°á, á ááłááľ áá áŚá˝ ááľáĽ áá˝á. áá á´áááá áĽááá á 3 á áááááśá˝ áĽááľááľá°áá áĽáá°ááá°áá áá˛áŤáá áááá á ááĽáᢠáá á˝áá á¨ááá áááᣠá áááááľá áĽá áá°á ááá á¨ááἠááľá°ááá á áááááľ áĽáľááľá ááááá, ááá áá á˝áá á¨ááŁ, á áá¨á ááą ááľáĽ áľááá á¨ááἠááťáťáŤ á áááááľ áĽá˝ááá.
áá áááľá áá?
NIFI áááŁá áľáአáááľ áĽá áá¨áá áááľáŹáľ á¨á°á¨ááá á ááá´áá¸á ááᣠáĽá ááĽá áŤáá¸á ááááá˝ ááá¨á áááŽá˝ áĽá áááŚá˝áŁ á¨áááá áľáŞáľ áĽá ááá˝ áĽáᢠáĽáŠ áááť ááá áá á áŁá ááá ááᢠáĽáá° getFileᣠsendHttpRequest áĽá ááá˝ áŤá áĽáá
á áá°áśá˝ áĽáá° áŤáŹáá˝ ááá¨á áá˝ááᢠáĽáŤááłááą áŤáŹ á ááľ á¨á°áá°á áá°áľá ááááá, á¨áĽáą ááľá°ááĽá á¨áá
á áłá˝ áŁáá áľáĽá ááľáĽ ááłáŤá. á áá°áą áááá ááľá°ááĽá áá á¨á áá áááá á°ááśá˝ á°á˝ááá
á˝áá á¨ááťá ááłáĽ á¨á¨áĽá áá ááá á áá á¨á°ááá° áĽá á¨á°áá ááá áá¨á áá° á ááľ ááá°-á
áá á áááá áĽáá˛áá á
áááľá ááá°ááľ ááá˘áá˝ áľáá˝ ááá á¨ááľá¨á ááááľ áá á˘
áááłá:
áŤáŹáá˝ áĽááľ á áĽááłá¸á áĽáá´áľ áĽáá°áááá á¨ááŤáłá ááłá áááľ ááľáĽ áááŁá. á á ááá áááááĽáŠ á áŁá ááá áá á¨á¤á˝á˛á˛á áĽáŤáá áĽááá ááá (á ááľá ááłáĽ, á áĽáŤáá á áŤá ááľáĽ áŤáá ááá áá. ᨠNIFI á˝ááłáá˝á áááłá¨áľ, á áá ááłá, áĽáŤáá á¨á áŤáŁá˘á á¤áá¤á˝ ááá á¨ááááľ áá°áľ ááááŤá), á¨ááŤá áĽáŤáá áĽáá°á°á¨á°á ááá˝ áĽáááŤáá, á áľááŠ, á¨á¤áá¤á˝ ááá á¨ááááľ áá°áľ áĽá á¨ááŤá á á¤áá˛á áá° á¤áá¤á˝ á¨ááááá áá°áľ. áá°áśáš áĽááľ á áĽááłá¸á áĽáá°áááá ááĽáŤáŤáľ á áá áá áá°áľ ááá á°áĽá á áá áŤá. áá á NIFI ááľáĽ áŁá áŞáŤáľá áĽá áááśá˝á á¨ááŤá¨áá˝ áá°á¨áłá á áŤá ááᢠáááľ - á áĽá¨áľ ááá á¨á°áá¨áá áááĽá˘ áááľáᣠá áááľáŁ á¨á ááľ áŤáŹ ááá á¨á°áá á áĽá áá° áá áŤáľá°ááá áááá áááą ááááá˘
áĽáá°áááá¨áąáľ, áá áľáá á á ááá áá°áąá áŤáłáŤá. HandleHttpáĽáŤá - áĽáŤááá˝á ááá áá ᣠá˝ááá áá°áŠ - ááá˝ á°áŞ á áŤá áŤáááŤá ᣠHandleHttpResponse - ááá˝ áá°áŁáᢠFetchFile - á¨ááá áá¨ááťá ááá ááá áá áĽá áá° PutSftp áŤáŹ áŤáľá°áááá - áá áá ááá á á¤áá˛á áá á á°á áá°á á áľáŤáť áŤáľáááŁá. á áá áľááá áá°áľ á¨á áá á˘
á áá ááłá áá áĽáŤá á¨ááá ááá ááááŞáŤ ááᢠá¨áĽáąá á¨áááá á ááŤáŽá˝á áĽáá.
á¨StandardHttpContextMap á áľá°áá ááá ááá áĽáá
áá á áŁá ááá áá - áá
áĽáŤáá áááá áĽá áááá á á¨ááŤáľá˝á á¨á áááááľ ááááľ ááᢠáá°á¨á᪠ááááŽá˝ áĽá á ááłááá˝ áĽááłá áá¨áľ áá˝áá -
á ááá áᣠReplaceText á¨áŤáŹ áá á á ááŤáŽá˝á áĽáááá¨áľá˘ á ReplacementValue áľáŠá¨áľ ááľá áľ á°áᢠáá - áá áá°á ááá áĽáá° ááá˝ á¨áááá°á áá. á á ááĽáŽá˝ ááľáĽ á¨áááἠááľáłááťáá á°á¨á ááľá°áŤá¨á áá˝áá ᣠáááἠááľáłááťáášá áá¨áľ áá˝áá {nifi áŤááłá¸áá áľ}/nifi-1.9.2/logs ᣠáĽáá˛áá ááľááľ / á¨áľáŹáľ áááŞáŤáá˝ á á - á áĽááá áááŞáŤáá˝ áá á áááľá¨áľ áá°áąá áááŁá á áá˝áá ááᢠáŤá áááľ á¨á°áłáŤ á¨á˝áá áá°áľá á á°ááá¨á° áá°á ááá ááá˝ á¨ááá áá°áľ áá áŤá, áĽá á áá áááł, á ááá áŤáá°áłáŤáá áá°áľ áá áĽáááŁáá.
áááš á á°áłáŤ áááł á¨á°áá á¨á áľ áááł á áľá°áá á HandleHttpResponse áŁá áŞáŤáľ ááľáĽ ááá á¨ááŤáľá°áľáľ ááá á¨ááá˘
á¨áĽáŤááá ááá˝ á ááá°áá - áá° ááá ááá á áĽá á á¤áá˛á á áááá áá áĽááľááá áᢠFetchFile - á á ááĽáŽá˝ ááľáĽ á¨á°á áá°á ááááľ ááá ááá áá áĽá áá°áááĽáá áá°áľ áŤáľá°ááááá˘
áĽá á¨á፠áŤáŹá PutSftp - áááá á ááá áá¨ááť ááľáĽ áŤáľáááŁá. á¨ááááŞáŤ á ááŤáŽá˝ á¨áá á áłá˝ ááłáŠ áá˝áá.
áĽáŤááłááą áŤáŹ áááá áŤáá áľ á¨á°áᨠáá°áľ áááá áľáŠá¨áľ ááľá áą á°áᢠáá. ááá ááľáĽáľáĽ áá ááľ á¨ááááááá á áŁá ááá ááłá á°áááá°áá. á ááá á, áá°áąá áľáá˝ ááľáĽáľáĽ áĽááľáŁáá, áĽááŤá á ážáááš áá áľáá˝ áĽáá˝ááá.
á¨á áá ááľáĽáľáĽ ááłá
áá°á ááá á¨ááἠááľá°ááá á áááááľ á¨áśá áááĽááľá á ááľá°áŤá¨á áá°áľ áľáá˝ á¨á°ááłá°á áá. á á ááá áá°áą á¨áá á áłá˝ áŁáá áľáĽá ááľáĽ ááłáŤá.
áĽáá ᣠááłáĄ á áŁá á¨á°ááłá°á á áá°áá-á¨á°á ááá áá¨á áĽáá°ááŤáľáááá áĽáŤá á°á¨á°á ᣠáááĽááľ áĽáá°á°áá á ááá˝ áá¨áá ᣠá¨ááá˝ áááá á¨ááá á áá°áľ áááá ᣠá¨ááŤá á á°áá°á á áááᎠá áľá°áŤááá áĽá á¨á፠á áľá°áááááᢠáááá áá°á ááá á áśá áááĽááľ ááá áá ááááŠá˘
áĽá áĽáá°ááľá á áĽáááŤá á¨áá áŤá¨áá¸áá á á°áŁáŁáŽá˝ áĽáá°áá áááá˝ á áá á áá°áá - áá˛áŤáá áá° á áłá˛áśáš áĽáááľá˘ áááááá ááá áá¨á á¨ááá áĽá áĽáá° ReplaceText áŤá á°áŤ áŤáŹáá˝ á°áľáá áŤááá á¨áŤáľáá áľááŞááľ ááá ááááĽááłáᢠáá á¨ExecuteGroogyScript áŤáŹá á áá áá áá¨ááá áá˝ááᢠá¨áĽáą á áá áśá˝ á¨áá á áłá˝ ááłáŤá.
áľááŞááąá áá°áá áŤáŹ áááŤá áááľ á ááŤáŽá˝ á áᢠá¨ááááŞáŤá áľááŞááľ áŤáá ááá á ááľáá ááᢠááá°áá áľááŞááąá áá° áľááŞááľáŚá˛ á ááľááŁáľ ááᢠáĽá áĽáľá¨áááá áľá¨áľáŁ á¨ááťáá áľááŞááľ áŤáŹ áĽá PLsá áá°ááá - á¨ááŤá¨áá¸á á ááą ááŠá ááᢠá¨á፠ááá˘áá˝á á áłáááá - áĽáá°áá áŁá áŤáŹáá˝ ááľáĽ áľááŞááśá˝á á á፠ááľáĽ ááťá á áá˝ááᢠá áľááá ááááááľ, á¨áŤáľáá áĽá áŤáŹ ááá á áĽá áá° NIFI áľáááľ ááŁá áŤáľáááááłá. áá á á ááá ááá á¨áłááĄá áá á¨á á áááŤáá˝ á¨áłáá áá ᣠá áá á˝áá ááľáĽ á áááááá ᢠáĽá á¨áá¨á ááá ááᢠá¨áłá˝ á áśá áááĽááľ ááľáĽ ááłáááŤáá á ááá á¨ááŤáľáľ á¨áá¨áŤ áľááŞááľ á áᢠáἠáááľ áŤáľááááᢠáááá á¨flowFile ááľá°á á áááá ᣠáĽáá°ááŤáľáááá á áľááłáŁ á áááá ᣠáĽá፠áá á áľááá áᢠááá á¤á°-ááťáááľ á ááááááłá¸áá áἠááŁá á¨áááŁá ááłá ááᢠá ááá á¨ááŁááš á ááąá ááľááŁáľ áĽááłááŚáľ ááá áá˝ááᢠááłáą á áá áŤáŹ ááľáĽ áŤáá áľááŞááľ ááá¨á á áŁá á¨áŁáľ ááᢠᨠNIFI JVM áá ááááááľ áĽá á¨áá¨á áá°áąá ááááá ááááľ á á. á áá á¨ááá ááľáĽ áá°áá áŞáŤá á ááľáŠ áĽá á¨ááá-ááá ááá ááááľ á áľááľáŤááᢠáá¨á á á áá ááľáĽá á°á¨ááááᢠáľááŞááąá á˛áŤá á¨ááᥠáľá á°áśá˝ ááá áááľá¨á á áŁá ááá áá¸á áĽá á 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)
}
á áĽááṠᣠá¨áŤáŹá áá ááľ á¨ááŤá áá áĽáá áá ááᢠá ááá á, á¨á°áťáťáá ááá áááá áá° á áááአáá°ááá¨á áŤáŹá áá°áááá. á¨áá á áłá˝ á¨áá áŤáŹ á áá áśá˝ á áá˘
á¨áśá áááĽááľ á¨áá°áááá áľá áá´ áĽáááááá. á¨áľ áá á¨ááá˝ááᢠá ááá á, áá áłáá áááá áááá áŤáľáááááłá.
áĽáá° á áľá°ááá
áĽá áľáááľ (soapAction) áŤá á ááłááľ ááĽá¨áśá˝á áĽáá¨ááŤáá. á áľáááĽáŁ á á¨áááĽá˘ á¨áśá áĽáŤááá˝á áĽáá´áľ áĽáá°ááአáá áá áá¨áᣠáááá¨áą
ᨠNIFI áá°áśá˝á ááá áá áĽá á ááŤáŽá˝á á°áááá°ááᢠáĽáá´áľ áĽáá°áááá áĽá á¨áĽááą áĽááá°á áĽá áá˝ áááľ áá¸á. á¨á°áááą ááłááá˝ ááłá áá¸á áĽá á áá፠ááľáĽ á¨áĽááá°áá áľáá˝ áááŤáŤáᢠáá á˝áá áááá˘áá˝ á¨á°áá°á áĽá á áĽáá°ááá¨á á°áľá á á°ááááᢠáá°á á á á áľáŠáŽáľ áĽááá°áááá. ááááá áĽáŤá áŤáááľ - ááťá. áááľ áááľá áľ áĽáááŤááá˘
ááá: hab.com