나는 Rest api에서 데이터를 가져 왔습니다. Json 형식의 데이터를 얻은 다음 하나의 텍스트 파일에 넣습니다. 이제 DB에서 해당 파일 데이터를 시도합니다. 아래는 Mule flow의 XML 형식입니다.
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8082" doc:name="HTTP Listener Configuration"/>
<http:request-config name="HTTP_Request_Configuration" host="$host" port="$port" doc:name="HTTP Request Configuration"/>
<db:generic-config name="Generic_Database_Configuration" url="localDB Connection" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" doc:name="Generic Database Configuration"/>
<file:connector name="File" autoDelete="true" streaming="true" validateConnections="true" doc:name="File"/>
<flow name="Flowname">
<http:listener config-ref="HTTP_Listener_Configuration" path="/Customer" doc:name="HTTP" />
<http:request config-ref="HTTP_Request_Configuration" path="/Services/Customers/api/2.0/search/{a}" method="GET" doc:name="HTTP">
<http:request-builder>
<http:uri-param paramName="a" value="s"/>
</http:request-builder>
</http:request>
<file:outbound-endpoint path="D:\Docs" outputPattern="test.txt" responseTimeout="10000" doc:name="File"/>
<json:json-to-object-transformer returnClass="java.util.HashMap" mimeType="text/plain" doc:name="JSON to Object"/>
<logger message="#[message.payload]" level="INFO" doc:name="Logger"/>
<set-payload value="#[message.payload.CustomerID],#[message.payload.Address],#[message.payload.DOB],#[message.payload.FirstName],#[message.payload.LastName],#[message.payload.MiddleName],#[message.payload.PhoneNo]" doc:name="Set Payload"/>
<db:insert config-ref="Generic_Database_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[INSERT INTO dbo.tblCustomer (Customerid,Address,Dob,Firstname,LastName,Middlename,Phoneno) VALUES (#[Message.payload.CustomerID],#[Message.payload.Address],#[Message.payload.DOB],#[Message.payload.FirstName],#[Message.payload.LastName],#[Message.payload.MiddleName],#[Message.payload.PhoneNo])]]></db:parameterized-query>
</db:insert>
</flow>
</mule>
이와 같은 서비스에서 데이터 가져 오기
[{
"Address": "372 Willene Drive",
"CustomerID": 1010007031,
"DOB": "1981-09-19",
"FirstName": "Aaliyah",
"LastName": "Gonzalez",
"MiddleName": "R",
"PhoneNumber": "7775271592"
}, {
"Address": null,
"CustomerID": 1010007743,
"DOB": "1937-05-28",
"FirstName": "Aaron",
"LastName": "Green",
"MiddleName": "T",
"PhoneNumber": "0924758727"
}, {
"Address": "7 Country Lake Drive",
"CustomerID": 1010004653,
"DOB": "1936-03-07",
"FirstName": "Aaron",
"LastName": "Gutierrez",
"MiddleName": "Q",
"PhoneNumber": "9919500942"
}, {
"Address": "157 Tamir Avenue",
"CustomerID": 1010005851,
"DOB": "1955-12-19",
"FirstName": "Abigail",
"LastName": "Garcia",
"MiddleName": "G",
"PhoneNumber": "4695049914"
}, {
"Address": "5 Cross Road",
"CustomerID": 1010007962,
"DOB": "1939-07-23",
"FirstName": "Abigail",
"LastName": "Gomez",
"MiddleName": "R",
"PhoneNumber": "6267010014"
}]
이것에 대해 도와 주시겠습니까?
나도 Mule을 배우는 중이고 수천 개의 질문이 있지만 귀하의 질문에 답할 수 있습니다.
흐름에 몇 가지 흐름이 있습니다. 한 번에 너무 많은 질문을합니다.
흐름은 다음과 같습니다 (주석을 위해 HTTP에 1/2을 추가했습니다)
첫 번째 문제는 3 개의 진입 점이 있다는 것입니다. 2 개의 HTTP 및 1 개의 파일. HTTP1은 하나의 http 호출을 기다립니다. HTTP2는 다른 것을 기다리며 둘 다 실제로 데이터를 얻는다고 가정하는 파일 구성 요소가 있기 때문에 아무것도하지 않습니다.
불필요한 HTTP를 제거하고 파일을 재구성하여 로컬 디렉토리에서 일부 파일을 가져 오자. HTTP에서 파일을 가져 오기 위해 흐름의 다른 부분을 추가 한 다음 (필요하지 않은 파일에 저장) 사용할 수 있습니다. DB에 데이터를 삽입하는 질문 주제에 맞지 않기 때문에 이것을 건너 뜁니다.
구성의 두 번째 문제는 JSON을 맵에 매핑한다는 것입니다. 배열이 있습니다. 자, 배열에 매핑 해 보겠습니다. 코드를 참조하십시오.
세 번째 문제는 하나의 레코드로 작동하는 Database Conector가 있지만 Arry에는 많은 레코드가 있다는 것입니다. 따라서 Array에 ForEach 루프를 사용하고 레코드를 하나씩 처리해 보겠습니다.
작동 함을 보여주기 위해 로거를 몇 개 더 추가했습니다.
그리고 여기에 코드가 있습니다
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:json="http://www.mulesoft.org/schema/mule/json" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:db="http://www.mulesoft.org/schema/mule/db" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/db http://www.mulesoft.org/schema/mule/db/current/mule-db.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd">
<db:generic-config name="Generic_Database_Configuration" url="localDB Connection" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" doc:name="Generic Database Configuration"/>
<file:connector name="File" autoDelete="true" streaming="true" validateConnections="true" doc:name="File"/>
<flow name="Flowname">
<file:inbound-endpoint path="C:\tmp" responseTimeout="10000" doc:name="FileIn">
<file:filename-regex-filter pattern="text.txt" caseSensitive="true"/>
</file:inbound-endpoint>
<file:file-to-string-transformer doc:name="File to String"/>
<json:json-to-object-transformer returnClass="java.util.ArrayList" mimeType="text/plain" doc:name="JSON to Object"/>
<logger message="#[payload]" level="INFO" doc:name="Log Whole Payload"/>
<foreach doc:name="For Each">
<logger message="#[payload]" level="INFO" doc:name="Log one Record"/>
<logger message="#[payload.Address] #[payload.CustomerID]" level="INFO" doc:name="Log two fields"/>
<db:insert config-ref="Generic_Database_Configuration" doc:name="Database">
<db:parameterized-query><![CDATA[INSERT INTO dbo.tblCustomer (Customerid,Address,Dob,Firstname,LastName,Middlename,Phoneno) VALUES (#[Message.payload.CustomerID],#[Message.payload.Address],#[Message.payload.DOB],#[Message.payload.FirstName],#[Message.payload.LastName],#[Message.payload.MiddleName],#[Message.payload.PhoneNo])]]></db:parameterized-query>
</db:insert>
<logger message="Record succesfull" level="INFO" doc:name="Log Success"/>
</foreach>
</flow>
</mule>
localDB 연결 을 실제 URL로 변경하십시오.
jdbc : sqlserver : // myserver : 1433; databaseName = myDB; user = myid; password = mypassword;
그리고 당신은 갈 수 있습니다.
응용 프로그램을 실행하십시오.
데이터 파일을 c : \ tmp \ text.txt에 복사합니다.
응용 프로그램은 파일을 가져 와서 문자열로 변환 (다음 파일을 준비하기 위해 파일 삭제), 문자열을 개체의 배열로 변환하고 각 개체 (행인 행)에 대해 로그하고, 두 개의 필드를 기록하고, 레코드를 저장하고, 로그 메시지를 만듭니다. 성공의.
그런 다음 응용 프로그램은 다른 text.txt가 진행될 때까지 기다립니다.
물론이 모든 단계가 필요하지는 않지만, 무슨 일이 일어나고 있는지, 언제, 무엇이 일어나고 있는지 느끼는 데 도움이됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다