뮬 3.3.0
페이로드를 분할하는 플로우가 있습니다.
그런 다음 각 항목은 사용자 지정 변환기를 거쳐 항목이 잘못 구성된 경우 예외를 throw합니다.
오류 항목을 파일에 기록하는 catch 예외 전략이 있습니다.
나는 나머지 부분을 처리하는 흐름을 계속하고 싶다. 내가 아는 한 예상 된 동작이어야한다.
문제는 흐름이 중지된다는 것입니다.
예외 후에도 뮬 (3.3) 플로우 계속
간단한 테스트 파일을 사용하여 간단한 테스트 플로우를 첨부하고 있습니다. 파일은 2 줄의 csv 파일이며 각 줄에는 3 개의 입력란이 있습니다. Im 그루비 스크립트를 사용하여 파일을 처음으로 파일로 분할 한 다음 각 줄을 필드로 분할합니다. 필드가 잘못된 경우에도 예외를 시뮬레이트하기 위해 그루비 스크립트를 사용하고 있습니다. 이 경우 필드가 "goodbye"라는 단어이면 RuntimeException을 발생시킵니다. 이 흐름을 테스트하면 예외 이후 나머지 필드가 처리되지 않는다는 것을 알 수 있습니다 (이 경우 로그인 됨). 이 예제에서는 catch 예외 stragegy가 실행되지 않습니다.
입력 파일 :
hello,cruel,world goodbye,cruel,world
TestFlow
내가 먼저 어떻게 할 것인지
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:scripting="http://www.mulesoft.org/schema/mule/scripting" xmlns:file="http://www.mulesoft.org/schema/mule/file"
xmlns:vm="http://www.mulesoft.org/schema/mule/vm" 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" version="CE-3.3.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/scripting http://www.mulesoft.org/schema/mule/scripting/current/mule-scripting.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd ">
<file:connector name="inputFileConnector" autoDelete="true"
streaming="false" validateConnections="true" doc:name="File" fileAge="60000"
readFromDirectory="#{systemProperties['user.home']}"/>
<catch-exception-strategy name="Catch_Exception_Strategy">
<logger message="!!!!! Exception Handler !!!!!" level="INFO" doc:name="Logger"/>
</catch-exception-strategy>
<flow name="TestCaseFlow1" doc:name="TestCaseFlow1">
<file:inbound-endpoint path="#{systemProperties['user.home']}"
responseTimeout="10000" doc:name="Input File" fileAge="100" connector-ref="inputFileConnector">
<file:filename-regex-filter pattern="input.csv"
caseSensitive="false" />
</file:inbound-endpoint>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy">
<scripting:text><![CDATA[return payload.split('\n');]]></scripting:text>
</scripting:script>
</scripting:component>
<collection-splitter doc:name="Collection Splitter"/>
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy">
<scripting:text><![CDATA[return payload.split(',');]]></scripting:text>
</scripting:script>
</scripting:component>
<collection-splitter doc:name="Collection Splitter"/>
<scripting:component doc:name="Groovy">
<scripting:script engine="Groovy">
<scripting:text><![CDATA[if (payload.equals('goodbye')) {
throw new java.lang.RuntimeException('Dang!');
}
return payload]]></scripting:text>
</scripting:script>
</scripting:component>
<logger message=">>>>>>>>>>>>>>>>>> #[payload]" level="INFO" doc:name="Logger" />
</flow>
</mule>
페이로드는 개체의 컬렉션입니까? 설정을 게시 할 수 있습니까? – Daniel