我正面临批处理过程记录阶段的问题,请建议 - 我正在尝试加载一些KB文件(大约有5000条记录)。对于成功案例,它有效。 如果假设第一次命中的输入阶段发生错误并且流停止,则第二次尝试命中同一记录时。 Mule在流程记录步骤中停止执行。它未运行加载阶段。请在下面找到运行时间日志
11:55:33 INFO info.org.mule.module.logging.DispatchingLogger - Starting loading phase for instance 'ae67601a-5fbe-11e4-bc4d-f0def1ed6871' of job 'test'
11:55:33 INFO info.org.mule.module.logging.DispatchingLogger - Finished loading phase for instance ae67601a-5fbe-11e4-bc4d-f0def1ed6871 of job order. 5000 records were loaded
11:55:33 INFO info.org.mule.module.logging.DispatchingLogger - **Started execution of instance 'ae67601a-5fbe-11e4-bc4d-f0def1ed6871' of job 'test**
它在实例启动后停止处理 - 我不确定这里发生了什么。 当我停止流程并从工作区中删除 .mule 文件夹时。它然后工作。 我希望在使用临时队列加载阶段mule时,在输入阶段发生异常时不会自动删除它,但不确定这可能是真正的原因。
我无法实时删除.muleFolder。
你可以请任何人在这里建议是什么造成这种奇怪的行为。如何摆脱这个问题。请找config xml
<batch:job name="test">
<batch:threading-profile poolExhaustedAction="WAIT"/>
<batch:input>
<component class="com.ReadFile" doc:name="File Reader"/>
<mulexml:jaxb-xml-to-object-transformer returnClass="com.dto" jaxbContext-ref="JAXB_Context" doc:name="XML to JAXB Object"/>
<component class="com.Transformer" doc:name="Java"/>
</batch:input>
<batch:process-records>
<batch:step name="Batch_Step" accept-policy="ALL">
<batch:commit doc:name="Batch Commit" streaming="true">
<logger message="************after Data mapper" level="INFO" doc:name="Logger"/>
<data-mapper:transform config-ref="Orders_Pojo_To_XML" stream="true" doc:name="Transform_CanonicalToHybris"/>
<file:outbound-endpoint responseTimeout="10000" doc:name="File" path="#[sessionVars.uploadFilepath]"">
</file:outbound-endpoint>
</batch:commit>
</batch:step>
</batch:process-records>
<batch:on-complete>
<set-payload value="BatchJobInstanceId:#[payload.batchJobInstanceId+'\n'], Number of TotalRecords: #[payload.totalRecords+'\n'], Number of loadedRecord: #[payload.loadedRecords+'\n'], ProcessedRecords: #[payload.processedRecords+'\n'], Number of sucessfull Records: #[payload.successfulRecords+'\n'], Number of failed Records: #[payload.failedRecords+'\n'], ElapsedTime: #[payload.elapsedTimeInMillis+'\n'], InpuPhaseException #[payload.inputPhaseException+'\n'], LoadingPhaseException: #[payload.loadingPhaseException+'\n'], CompletePhaseException: #[payload.onCompletePhaseException+'\n'] " doc:name="Set Batch Result"/>
<logger message="afterSetPayload: #[payload]" level="INFO" doc:name="Logger"/>
<flow-ref name="log" doc:name="Logger" />
</batch:on-complete>
我对这种行为感到震惊很长一段时间。非常感谢您的帮助。 版本:3.5.1 提前谢谢。
答案 0 :(得分:2)
将max-failed-records设置为-1,这样即使出现异常,批处理作业也会继续
<batch:job name="test" max-failed-records="-1">
在实时环境中,你没有清理.mule文件夹的情况
只有在使用Anypoint Studio
时才会发生这种情况