我在批处理mule esb时遇到问题。如果我在进程记录面中设置任何有效负载并尝试在不完整的面上获得该有效负载,那么就不会获得该有效负载。变量和属性的问题相同。 如果我在进程记录阶段设置任何属性并尝试进入完整阶段,则始终获取空值。 如何在不完整阶段获得这些价值? 下面是流程..
<batch:job name="TestBatch" max-failed-records="-1">
<batch:input>
<component class="com.test.RecordTest"
doc:name="Java" />
<json:object-to-json-transformer
doc:name="Object to JSON" />
<custom-transformer class="com.test.CustomTr"
doc:name="Java" />
</batch:input>
<batch:process-records>
<batch:step name="Batch_Step1" accept-policy="ALL">
<batch:commit size="5" doc:name="Batch Commit">
<!-- Insert record in Salesforce -->
</batch:commit>
</batch:step>
<batch:step name="Batch_Step2" accept-policy="ONLY_FAILURES">
<logger message="STEPP #[getStepExceptions()]" level="INFO" doc:name="Logger"/>
<set-property propertyName="error" value="STEPP #[getStepExceptions()]" doc:name="Property"/>
<set-payload value="#[getStepExceptions()]" doc:name="Set Payload"/>
</batch:step>
</batch:process-records>
<batch:on-complete>
<logger level="INFO" doc:name="Logger" message="--> #[payload.failedRecords] --> #[message.payload] "/>
<logger message="error--- #[message.outboundProperties['error']] " level="INFO" doc:name="Logger"/>
</batch:on-complete>
</batch:job>
我在属性记录器
中得到了null我该如何解决这个问题?
答案 0 :(得分:3)
我收到了一些坏消息:-)。 按设计进行的批处理对于您可能尝试按步骤设置的任何值都不会过时,尤其是有效负载。
当我开始使用它时,我还希望会话变量在完整阶段处于正确的状态,但事实并非如此,它们在每一步都被完全擦除。
现在我不认为这是一个错误,但它实际上是一个设计特征,即使我不是真的喜欢它,我也可以参与其中。 我使用object store connector解决了同样的问题。
它允许您通过漂亮的XML配置块访问mule Object Store API,这样您就可以在内存变量中存储您可以在完成后恢复的变量,而不会受到流逻辑的影响。
希望这有帮助