面对批处理 mule esb 中的错误

Facing error in Batch Processing mule esb

我在批处理 mule esb 中遇到问题。如果我在进程记录面中设置任何有效负载并尝试在 oncomplete 面中获取该有效负载,则不会获取该有效负载。变量和 属性 也有同样的问题。 如果我在过程记录阶段设置任何 属性 并尝试进入完成阶段,那么总是得到空值。 如何在 oncomplete 阶段获得这些价值? 下面是流程..

<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="--&gt;  #[payload.failedRecords] --&gt;  #[message.payload] "/>
            <logger message="error--- #[message.outboundProperties['error']] " level="INFO" doc:name="Logger"/>

        </batch:on-complete>
    </batch:job>

我在 属性 记录器

中得到了 null

我该如何解决这个问题?

我从你那里得到了一些坏消息:-)。 批处理设计不会让您可能尝试在步骤中设置的任何值过时,尤其是负载。

当我开始使用它时,我还希望会话变量在完整阶段处于正确状态,但事实并非如此,它们在每一步都被完全擦除。

现在我不认为这是一个错误,但它确实是一个我可以理解的设计功能,即使我不是很喜欢它。 我使用 object store connector.

解决了同样的问题

它将允许您通过 nice XML 配置块访问 mule Object Store API,这样您就可以将变量存储在内存中,您可以在完成后恢复这些变量而无需他们受流程逻辑的影响。

希望对您有所帮助