ααα ααααΈααααΆα
ααΆααΆαααΎαα‘αΎαααΌα
ααααααΆαα
ααααααααααΎααΆααα
αα
α»αααααααααααααα»α αααα»αααααΌαααααααΆαααα
αα
αααα·ααααΆαααα αααα»αααΉαα
αΆααααααΎαααΆαα½αααααααΆαααααααα·α
αα½α
α αα
αααα»ααα·α
αα
ααααα»ααααααΆαα αααα»αααΆαααΆαααααααΎαααααΌαααΆαααααΆααααΆ ααΎαααααΌααααααΎαααΆααα½ααααα
αΌαααΆαα½α αααααααααααααααααΆαα. ααΆααααααΆαααααΎαααΆα αααααα ααΆααΆααααααΆααααααααααααααΈαααααΉααααααΌαααΎαααΌαααααΎααΆαααα HTTP αα
ααΆααα
ααα»α
αααα
ααααΆααααΆαααα½α α αΎαααΎααα·αααΆα’αΆα
ααααΎααΆαααααΎααααααα·ααααα»αααααααααΆααΆα SOAP α α’αααΈααααααααΆαα αΆααααΌα
ααΆααΆαααα αα·αααΌα
ααΆα
α ααΈαααααΆααΌα
ααΆαααααααααα’αααααααΌαααΆα ...
ααααααα
αααααΎαααααΆαααα 3 α ααΈαα½ααααα»αα αααααα½αααααΊααααΆααααΎαα αα α»ααααααααΆαααΌαααααΆααα·ααααααα ααααΆααααααα αα αααααααα·ααααααααααΈαααααααΈααααααααααΆααΈααΈααΈ ααααΎαα αα α»ααααααααΆααα·αααααααα αααα»αααΌαααααΆααα·αααααα αα·ααααααΎαα―αααΆααααα»ααααααα CSV ααΎααααΈαααααααΆαα αααααααααααααΆααα α ααα»α αααα ααααααααΆααααααΈααΈαααααΌαααΆαααα α ααΆ - ααααΆααΉααααααΌα FTP αααααα½αα―αααΆααααααΆαααααα ααααΎα±ααααΆααα»ααααΆα α αΎαααΆααααΆαα αααα»ααααααααααα»αα―αααΆαααΆαααα FTP α ααααΆααααααΈααΈ ααααΆααααααα·ααααααα’αααααααΎααααΆαα ααααΎαααΆααααα’ααααΆαααΆαα½αααΈαααααΌαα ααΆααα½αααααΎααΈααααααααααΆααααα ααααααΆααΈααΈααΈ ααΎααααΈααα½αα―αααΆααααααΆααα·ααΆααααΆααΆαααΎ ααα―αααΆαααααΎααααα½α ααΆαα ααααααααΆ (ααααΎαα αα α»ααααααααΆαααααααααΆαα ααΆααα·αααααΆ ααΆα linkToFile) αα·αααααΎααΆαααααΎααααααα»αααααααααΆααΆα SOAP α αααααΊααΌαααΆααα½αααΆαααΌα ααΆααααααα ααααΆααααααΈαααααΌαα αΆααααααΎαααΆαααΆααααααα½ααααααα αααααααα·αααααααααααΆααααΆαααααΎαα αα α»ααααααααΆαααΆααααααα ααααΆααααααΈααΈααααΎαααΆαα₯αααααα ααΈαααααααΆαα’αααααααΎααααΆααααααααΆαα αααΎα αααα αα 1000 ααααΎαααααΆαααα·αααααααααα»ααα½αααΆααΈα ααααΆααααα’αΆα ααααΆαα₯αααααα α αΎαααααΈαααααα½αααααΆαααΈααΆαααα αααα»αααα·ααΆααΆαααααααααααΆ ααΌα ααΆααΆαααααΎααααα ααΆααααα αΆα ααΆαααα·ααα»α αα·αααα·αααα ααΆαααααααααααΊααΆααααΆααααΆααααααααααααααΆααααααΆαααααααααΎαααΆαα αααα»αααΌααααααΆααααααΆααααΆααααααΆααααα’α·ααα½αα ααα½αααααΌαααΆαααααΎα±ααααΆαααα ααΎααααΈαααααΆαααΆααααα»αααααΆαααααα·αα αΆαααΆα αα
ααΆαααααΎα±αααααΈααααα ααααααα αα ααααα
αα ααααααα ααααααΆααααααααααΆαα αααααααα αΆ ααΎαααΆααααααα α α·ααααααααΎααααααα·ααΈαα αααα»α Java αααααααΎ Spring framework, Nginx balancer, Postgres database αα·ααα αα ααααααααααααα α αΎααα·ααααααΆααΏααα αα ααααααααααα α αΆααααΆααααΈααααααααΎααααααααααΆααα αα αααααααΆαα’αα»ααααΆαα±ααααΎααα·α αΆαααΆαα·ααΈααΆααααααααααααααααα»αααΆααααααααΆααααα αΆααα ααΆααααααΉαααααααΎαααΆαααααΆαααα ααΎαα αα αααα·ααααΆ Apache NIFI αααααΆαααΌαααΆαααααααα αααα»αααααααααΆααααΆααα αααα»αβααΉαβαα·ααΆαβααααΆαβααΆβαα αα αααα·ααααΆβαααβα’αα»ααααΆαβα±ααβααΎαβαααααΆααβααΎαβααααΆααααβααΆαα 3 αααα α’ααααααααααΉααααααΆααααΈααΆαα’αα·ααααααααααΆααααααΉααααααΌαα―αααΆα αα·αααααΆααααααααααα·αααααααααα’αααααααΎααααΆαα ααα»ααααααααα·αααΎα’αααααααΆααααααααα αααα»αααΉααααααα’αααΈααααΆαααααααααΆααααααΎαα αα α»ααααααααΆααα·αααααααααα»αααΌαααααΆααα·ααααααα
ααΎααΆααΆα’αααΈ?
NIFI ααΊααΆααααΆααααααααα
ααα
αΆααααααΆααααΆααααα»α αα·αααααΎαααΆααα·ααααααααααααααΆαααΆαααΏα αααααα·ααΈαααα½ααα½αα
ααα½ααααααααΆααααααα αα·αααΆαααααΆααααααΌα ααααααααΆαααααα αα·αα
αααΎααααα ααααΆαααααααΆααααααα’αα½αααΊααΆααΆααΆααααα½αααααΎααΆααα ααααΎαααΆααα·αααααΆααααΌα
ααΆ getFile, sendHttpRequest αα·αααααααααα’αΆα
ααααΌαααΆαααααΆαααΆααΆαααα ααΆαααααΈαα½ααααααΆαα±ααααααΎαααΆααα½α α’αααααααααααα’αΆα
ααΎαααΎααα
αααα»αααΌαααΆαααΆααααααα α―αααΆααααα’α·ααααααααααα’αααΈα’ααααααααααααΆαααα‘αΎαααααΎαααΆαααααΌαααΆαααααα
αααα·ααααα»αααΆααααααα’ααααααα½αααΆαααΎααααααΆααααΈααΆααααααααααααΌα αα·ααααα
ααα
ααΆααααααααααααααΆααααααα½αααΆααα
ααΆα’αααΈαα½ααααααΉααααα½α ααααΌα
ααΆααααααααΆααααΆα
ααααααΎα±ααααΈαα·αααΆααααααΆααααα½ααααααΆααα’αααα’αα·ααααααααΆαααα’ααΆααα
α§ααΆα ααα:
α§ααΆα ααααααααααααααΆαααααααΎα’ααααααααααααΆαα αα·ααα ααααααΌαααΆααα·α αΆαααΆα αααααααΆαααααΌαα ααΊααΆααααααΆααα ααΎαααα½αααΆαααααΎ HTTP (ααΆαααααΉααααΈ ααΆαα½αααΉαα―αααΆααα αααα»ααα½ααααααΎα ααΎααααΈαααα αΆαααΈαααααααΆααααα NIFI αααα»αα§ααΆα αααααα ααααΎα αΆααααααΎαααααΎαααΆαααα½αα―αααΆαααΈαααααααααα»αα―αααΆαααΌαααααΆαα ) αααααΆααααααΎαααααΎαααα‘αααααα·αααΌαααΆαααααΎααααααααααΎααααΌαααΆαααα½α ααααααααΆααΉαααααΎαααΆαααααΆαααα½αα―αααΆαααΈ FH α αΎααααααΆααααααααΎαααΆαααααΆααααααΌαααΆααΆαααα FTP αα FH α ααΆααΆαααααααααα»αααΆααααααΆααα±ααα αααΆααααΆααααΎαααΆαααΆαα’ααααααααααααΆαα αα·ααα ααααΆααααα’αααΈαααααα α ααΆ flowFile α αααααΊααΆα’αααααΆαααΌαααααΆααα αααα»α NIFI ααααααααΆαα»ααα»ααααααα αα·αααααΉαααΆαα ααΆαα·ααΆααΊααΆαα·αααααααααααααΌαααΆαααααΆααααα―αααΆαααααααΈαα αααβααΊβααΎβα’αααβααα½αβα―αααΆαβαα½αβααΈβααΆαααβαα½αβα αΎαβαααααβααΆβαα βαα½αβααα ααΆαα·ααΆβααΉαβααΆβα―αααΆαβααααβα’αααα
ααΌα αααα’αααα’αΆα ααΎαααΌαααΆαααααααα αΆαααΈααααΎαααΆαααΌαα α HandleHttpRequest - ααα½αααααααΎ αααα½αα’ααααα - αααααΎααα½ααΆαααααΎααα HandleHttpResponse - ααααΎααΆαααααΎαααα FetchFile - ααα½αα―αααΆαααΈαααααααααα»αα―αααΆα αααααααΆαα ααΆααα PutSftp - ααΆααα―αααΆαααααα ααΎ FTP ααΆαα’αΆααααααΆααααααΆααααααΆααα α₯α‘αΌαααααααααααααα’αααΈααααΎαααΆααααα
αααα»αααααΈαααααΆαααααΎαα»αααΊααΆααΆαα αΆααααααΎαααα’αααΈααααααααΆαα ααΌααααα‘ααααΎααααΆαααΆααααααααααααα ααΆααααααααααααααΆα
α’αααΈααααααααΆααα
ααΈαααααΊααΌα
ααΆα
ααΆαα ααΎαααααα StandardHttpContextMap - αααααΊααΆααααααααααααΆαααααααα’αα»ααααΆαα±ααα’αααααααΎ αα·αααα½αααααΎα αα
αααα»ααααα’α·αααααααααα αα·αααΌααααΈααααΆαα½αα§ααΆα ααα α’αααα’αΆα
ααΎαααΎα -
αααααΆααβαα ααΎαβααΎαβαααΆαααΆααααααβαααααβαα ααΆααααααααβαααα½αβα’αααααβααβααΆαααα ααΆαα½αα’ααααα α·ααααα»αααΆααα αααα ReplacementValue - αααααΊααΆα’αααΈαααααΉαααααΌαααααααααΌαα’αααααααΎααααΆαααα·ααααα»αααααααααΆααΆαααααΎαααα αα αααα»αααΆαααααα α’αααα’αΆα αααααααΌαααααα·αααααΆααααααααΆ α’αααα’αΆα ααΎααααααα ααα» {αααααααααα’ααααααααΆ nifi}/nifi-1.9.2/logs ααααΆααααΆαααΆαααααααααΆααα/ααααααααααα - αααααα’ααααΎαααΆαααΆααααααααΆααααα α’αααα’αΆα αααααααααααααΎαααΆαααΆααααΌα . αααααΊαααα»αααααΈαααααααΎαααΆαα’ααααααααααα ααααΎαααΆαααααΆαααααΎααΆαααααΎααααα ααΆααα’αααααααΎααααΆααααΉαααααΌαααΆαα α α αΎααααα»αααααΈαα½ααααααΎαααΉααααααααΆααααΎαααΆαααααα·αααααααα
αα·αααΆαα’αααΈαα½αα±ααα αΆααα’αΆααααααααΆαα·ααααα αααα»ααααααααααααααα· HandleHttpResponse ααΎααααααααααΆαααΆααα ααααααααΆαααααΎαααααααΌαααΆααααααΎααααααααααα
ααΎαααΆαααααααα ααααΌαααααΎ αα·αααΆαααααΎααα - α αΌααααααα ααΆαααα½αα―αααΆα α αΎαααΆααααΆαα ααΎαααΆαααΈααα FTP α FetchFile - ααα½αα―αααΆααα ααααΌααααααΆααααααΆαααααα»αααΆαααααα α αΎααααααΌαααΆαα ααααΎαααΆααααααΆααα
α αΎααααααΆαααα PutSftp square - ααΆααα―αααΆααα αααα»ααααααααααα»αα―αααΆαα ααΎαα’αΆα ααΎαααΎααααΆαααΆααααααααααααα ααΆααααααααααΆααααααα
ααΆαα½αα’ααααα α·ααααα»αααΆααα ααααααΆααα·ααααααΆααΆαααααΈαα½ααααΊααΆααααΎαααΆαααΆα ααααα‘αααααααααΌαααα αΆααααααΎαα ααΎαααΆααααα‘ααααΎαα§ααΆα αααααΆαααααααα»αααααα·ααααααΌαα±ααααΆαααΆαααααΌαααΆααααααααααα»αααααΆαααΆαα½αα‘αΎαα αααααΆαα ααΎαααΉααα·αα·αααααΎαααααΎαααΆαααααααα»αααααΆαααααα·α αααααΎαααΉααααααααααα·α ααααα½α αα ααΎα ααα’αΌαα
α§ααΆα ααααααα»αααααΆαααΆα
ααααΆααααααααααα·αααααααα α’αααααααΎααααΆααααΆαααααααΆαααα»αααααΆαααααα·α αααααΆαααααΎαααΆαααααΆαααααααααΆα SOAP α ααααΎαααΆαααΌαα ααααΌαααΆααααα αΆααα αααα»αααΌαααΆαααΆααααααα
αα ααΈααααααα·αααααααα·ααααα»αααααΆαααΆαα·ααααααα ααΎαααΆαααα½αααααΎααΈα’αααααααΎααααΆααααΆααΆααααααΌαααΆααα·αααααα ααααΎααΆαααααΎαααααΆααΆααααΆαααα½αααΆα α αΆααααααΎαααααΎαααΆαααα½αα―αααΆαααααΎααα αααααΆααααααααααα½αααΆααααααααα·ααααΆααΆααααΆαα α αΎααααααΆαααα αααααα―αααΆααα α’αααααααΎααααΆαααααα»αααααααααΆααΆα SOAP αα ααΆαααααΆαααΈαααα
αααα»αβαα·αβααΆβαα·αβα αΆαααΆα αβαααααΆβαααααααβααΌαβααΆαααβαααβααΎαβααΆαβααΎαβααΆαβααΎβαααβαα - α αΌαβααααΆααααΈβαααααβαα βααααααβααααΈα ααααα·αααΎα’αααααααΌαααΆαααααααα½αα―αααΆαααΆαα½α α αΎαααΆαααααααα ReplaceText ααααααΆαα·ααααααααα α’αααααΉαααααΌααααααααααααΈαααααΆαααααα½αααααα’αααα αααα’αΆα ααααΌαααΆαααααΎαααααααΎ ExecuteGrogyScript square α ααΆααααααααααααΆααααΌαααΆααααα αΆαααΆααααααα
ααΆααααααΎαααΈααααααΆααααΆααααα»αααααααΈααα αααα»αααΆααααααα ααΈαα½αααΊαααααΆαααΆαααα―αααΆααααααΆαααααααΈαα ααΈααΈαααΊαααααΆααααα αΌαααααααΈααα αααα»α scriptBody α ααΆαααααααα»αααΉα ααΆααα executeScript ααΆααααααΆααΆααΆα αααΎα - αα½ααααα»αα αααααα½αααααΊ groovy α αααα»αααΉαααα α·αααα’αααα’αα·αααααα java - α’ααααα·αα’αΆα αααααααααααΈααααα»α java αααα»αααΆαααααααααααΆαααα αααααΆααα’αααααααα·αααΆα αα α’αααααααΌααααααΎαααΆαααααααΆαααααα½αααααα’ααα α αΎαααααααααΆαα αααα»ααααααααα NIFI α ααααα·ααααα·ααΆαααΆααααΌααααααααΌαααΆαα’ααααααΆαααΆαααααααα½αααΆαα½αααΉα tambourine αααααΎαααΉααα·ααααααααΆααα αααα»αα’ααααααααααα αααα»αααΆαααααΎαααΎαααΆααΆαα’ααΌαααΆαα ααΆααααααααΊααΆααααααΈαααΆααααααααααααΆαααααααααΎαααΆαα’αΆαααααααααααααΆαααα αααα»αααΆα SOAP α ααΆααΆααΆαααααΆαααααα»αααΆαααααααααΆααα α’αααααα―αααΆαααΈ flowFile α αΎαα’αΆαααααααΆ αα»αααααα ααΆα’αααααααΌαααΆααααΆαα·ααα ααΈααα ααααΎαα αα α»ααααααααΆαα ααΆαααα½αα’αααααααααΆαααααααααΆαα·αααααααααΆαααααΆααα’ααααααΌαααΆααα½ααααα αΌαααα ααΆα’αΆα ααΎαα‘αΎααααα’ααααα ααααααΌαααΆαα αΌα libs αα½αα αα»ααα·ααααα·αα½ααααααΊααΆ ααααααΈααααα»αααΆαααααααα·ααΆααααααααΆαααΆααα ααΆααα·ααΈαα½αααΎααααΈααααΆαααα NIFI JVM α αΎαα αΆααααααΎαααααΎαααΆαααααΆααααα α»αα αααααααΆαα αααα»αααΆαααΎαααααΎαααΆααααααα·ααΈαααα»ααααα»α αα·ααααααααααΎααΆαααα½αα―αααΆαααΈααααα αααα»αβααβααΆαβααβααα α»αβαααα»αβαααα»αβαααα ααα α»ααααααα α‘αΎααα ααααααα»αααααααΈαααΊααΆααααα½ααααααΆαα Google α αΎαααααΌαααΆααααααααα 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)
}
ααΆααα·ααααααΊααΆαααααααααααΆαααααΌαααΆαααααααααΆααααααα ααα αααααΆααααα―αααΆααααααΆαααααΎαα αα α»ααααααααΆαααααΌαααΆαααααααα ααΆααααααααα½ααα»αααααΌααααα»αααΆααααααΌαα―αααΆααα αααΆαααΈαααα ααΆαααααααααααΊααΆααΆαααααααααααΆααααΆααααααα
ααΎααααααΆα’αααΈαα·ααΈααΆααααααααααΆα SOAP ααΉαααααΌαααΆααααααΌαα ααΎααααααααααααααΆα αααααΆααα’αααααααΌααααα αΆαααΆαααααΊααΆ SOAP α
αααααααααααααααααααα·αα½αα
ααα½αααΌα
ααΆαααΆαααΈα αα·ααααααααΆα (soapAction)α ααΎααααααΆαα»ααα·ααα·αα·αααα α’αααα’αΆα
ααΎαααααααΆααααα’α·αααααααα’αααΈααααααααΎααααΎ SOAP
ααΎαααΆααα·αα·αααααΎααααααΎαααΆα αααΎααααααΆααααΆαααααΎααααΆααααααΎαααΆα NIFI α ααΎβαα½αβααβααΆαβααααΆααβααααβαααΆαβααΆ α αΎαβα’αααΈβααΆβααααααααβαα·αβααααΆααβααααβαα½αβαα? α§ααΆα αααβαααβααβα αΆααβαα»αβααΊβααΆβααΆαβααΆααααα α αΎαβαα»αβααααΆβααααα·α βααΈβα’αααΈβαααβααΎαβα‘αΎαβαα·αβααααΆααβαααα»αβααΆαβααααα»αααα αααα»ααααααΉαααΆα’ααααααααααΉαααΆααααααααααα·α αα½α αααααΆααα’αααα’αα·ααααααα ααΌαβα’ααα»αβα ααααβααΆαβααα α·αααβαα»αααΆααβααααβαααα’αααα ααααα·αααΎα’αααααΆααααα½αααΌααααααα αααα»αααΉαααααΆααΆαααααΎαα
ααααα: www.habr.com