2016-05-31 6 views
0

파일 (XML 파일)을 읽고 IBM MQ (대기열)에 데이터를 저장해야하는 응용 프로그램 흐름을 설계하고 있습니다. 파일 읽기 및 업데이트 대기열을 트리거하는 HTTP 요청을 만들어야하나요, 그렇지 않으면이 작업을 어떻게 수행해야합니까?Http 끝점을 통해 파일 인바운드 종점 호출 - IBM XML에서 XML을 페이로드 및 업데이트로 설정

현재 HTTP 요청을 만들고 WMQ에 연결하고 있지만 대기열에 NULL 데이터가 있습니다. 기본적으로 페이로드는 NULL입니다. 내가 대기열을 탐색 할 때

내가 읽은 데이터입니다 : sr.org.mule.transport.NullPayload1.L5U ... XP를

App Flow

Message Data in the Queue

+0

귀하의 질문은 혼란 스럽다. 파일을 읽으려면 HTTP로 시작하는 이유는 무엇입니까? 왜 인바운드 파일로 시작하지 않습니까? –

+0

요청에 따라 파일에 액세스하지 않으려는 경우. 직접 파일 인바운드 (HTTP 사용 안함)를 사용하십시오. – star

답변

1

는 다음과 같이하십시오 :

enter image description here

당신이 흐름의 시작 부분 이외의 장소에서 파일 커넥터를 사용할 때마다, 다음은 아웃 바운드 엔드 포인트가된다. 모든 파일을 검색 할 인바운드 엔드 포인트로 파일을 사용하여 를 들어

, 당신은 일부 흐름의 시작 부분에서 사용한다 & 중지 된 상태 흐름을 유지 처음로 : 귀하의 케이스를 들어

<flow name="filePickupFlow" initialState="stopped"> 
    <file:inbound-endpoint path="src/main/resources/input" responseTimeout="10000" doc:name="File"/> 
    <wmq:outbound-endpoint queue="gh" doc:name="WMQ" connector-ref="WMQ"/> 
</flow> 

필요한 파일 위치로 경로를 변경하십시오.

HTTP를 통해 호출 더 를 들어, & 파일 인바운드 엔드 포인트 호출을 포함하는 흐름을 시작하는 식 구성 요소를 사용하는 HTTP 엔드 포인트와 다른 흐름을 만들 때 : 다음

<expression-component doc:name="Expression"> 
    app.registry.filePickupFlow.start(); 
</expression-component> 

원하는 경우 처리를 완료 한 후 중지하려면 표현 구성 요소을 다음과 같이 다시 사용할 수 있습니다.

<expression-component doc:name="Expression"> 
    Thread.sleep(5000); 
    app.registry.filePickupFlow.stop(); 
</expression-component> 

Thread.sleep()은 흐름 작업이 완료되도록 흐름 시작 & 중지 사이에 약간의 시간 간격을두기 위해 여기에 사용됩니다. 이 시간 간격을 유지하기 위해 다른 것을 추가하거나 자신의 사용법에 따라 시간을 설정할 수 있습니다.

나는 이것이 당신이 찾고있는 것 같아요.

감사합니다,

JJ

+0

정말 고마워. 고마워. 그러나 위치에서 파일을 선택할 수있는 동안 wmq는 파일 내의 데이터를 읽을 수 없었습니다. 임의의 데이터를 읽고이를 MQ에 넣습니다. 파일 내의 데이터를 MQ에 전달하려고합니다. – dodger

+0

임의의 데이터를 두지 않았습니다. 실제로 파일 인바운드의 출력은 파일 유형이므로 파일 끝점과 WMQ 사이에 ** File to String ** 변환기를 추가하여 WMQ에서 읽을 수 있도록해야합니다. –

+0

감사합니다. @ J. J. 매우 유용했습니다. 이제 XML 파일을 다른 위치로 다른 위치로 이동해야하는 경우 다른 흐름을 만들어야하고 어떻게 그 흐름을 트리거해야합니까. – dodger

0

하는 경우 필요에 따라 파일 구성 요소에 액세스하려고합니다 (HTTP에 액세스 할 때마다 파일 구성 요소 만 액세스해야 함) 동일한 작업을 수행하는 파일 구성 요소 대신에 Mule Requester을 사용하십시오.

<mulerequester:config name="Mule_Requester" doc:name="Mule Requester"/> 
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" basePath="test2" doc:name="HTTP Listener Configuration"/> 
<flow name="httpFlow"> 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/> 
    <mulerequester:request config-ref="Mule_Requester" resource="file://C:/in" doc:name="Mule Requester"/> 
    <object-to-string-transformer doc:name="Object to String"/> 
    <logger message="**payload:*#[payload]" level="INFO" doc:name="Use WMQ here instead of Logger"/> 

</flow> 

링크를 참조하십시오 : https://github.com/mulesoft/mule-module-requester/blob/master/mulerequesterdemo/src/main/app/MuleRequesterDemo.xml 대신 HTTP의

, 당신은 또한 당신의 필요 조건에 따라 설문 조사 구성 요소를 사용하여 작업 트리거를 예약 할 수 있습니다. 희망이 도움이됩니다.

0

파일 커넥터를 인바운드 엔드 포인트로 사용하려고했지만 실제로 아웃 바운드 엔드 포인트로 사용하려고했습니다. 구성 xml 파일에서 파일 커넥터를 확인하십시오.

인바운드 파일 커넥터, 폴링 스코프 또는 쿼츠 커넥터와 같은 파일을 읽는 방법은 여러 가지가 있습니다. 당신은 당신의 요구 사항에 따라 이들 중 누구라도 사용할 수 있습니다. 간단한 흐름은

<flow name="testfixedFlow"> 
    <file:inbound-endpoint path="tmp" connector-ref="File" responseTimeout="10000" doc:name="File"/> 
    <wmq:outbound-endpoint queue="xyz" connector-ref="WMQ" doc:name="WMQ"/> 
</flow> 

입니다하지만 당신은 흐름 사이에 자원을 얻으려면 당신이 도움이 Mule requester

희망을 사용할 수 있습니다.