如何在Mule ESB中向db发送多条记录

如何在Mule ESB中向db发送多条记录,mule,esb,mule-studio,anypoint-studio,Mule,Esb,Mule Studio,Anypoint Studio,我有一个入站数据库终结点,我正在选择一个条件为返回500行作为结果集的记录。现在我想在另一个数据库中插入冒号。我使用了批处理过程,有两个批处理步骤选择数据和插入数据。 现在,如果在选择数据时出现任何错误,我必须发送一封邮件,如果插入失败,我需要将其记录在不同的位置。因此,我如何为每个步骤创建两个不同的异常?我无法在批处理过程中使用catch exception。目前,我正在批处理步骤中使用流引用并处理异常。请为我提供一个better way.AM使用批处理执行->批处理->批处理步骤->流参考-

我有一个入站数据库终结点,我正在选择一个条件为返回500行作为结果集的记录。现在我想在另一个数据库中插入冒号。我使用了批处理过程,有两个批处理步骤选择数据和插入数据。 现在,如果在选择数据时出现任何错误,我必须发送一封邮件,如果插入失败,我需要将其记录在不同的位置。因此,我如何为每个步骤创建两个不同的异常?我无法在批处理过程中使用catch exception。目前,我正在批处理步骤中使用流引用并处理异常。请为我提供一个better way.AM使用批处理执行->批处理->批处理步骤->流参考->异常处理

 <batch:job name="BOMTable_DataLoader">
    <batch:process-records>
        <batch:step name="SelectData">
            <flow-ref name="InputDatabase" doc:name="InputDatabase"/>
        </batch:step>
        <batch:step name="InsertData">
            <batch:commit size="1000" doc:name="Batch Commit">
                <flow-ref name="InserDatabase" doc:name="UpdateDataBase"/>
            </batch:commit>
        </batch:step>
    </batch:process-records>
    <batch:on-complete>

仅对于500行,我不会使用批处理,您只需通过迭代创建一个SQL脚本,将所有插入操作一次性完成,然后通过数据库连接器执行即可

如果您想知道哪一个insert失败,那么可以使用foreach处理器对行进行迭代并逐个插入,这样您就可以控制输出,速度会慢一些,但这完全取决于您的需要

只需根据需要使用正确的查询类型,并记住可以在查询中使用MEL。如果您的输入也来自不受信任的来源,只需注意注入(如果您使用参数化查询,则出于安全考虑,因为参数是转义的)

更多关于db连接器的信息



在您的问题更新之后,我确认处理异常的唯一方法是您使用它的方式。mule中的模块被称为“批处理”,这一事实并不意味着每次您拥有看起来像批处理作业的东西时,您都需要使用该组件。当您遇到一些复杂情况时,不要使用它,而是使用标准的mule组件(如VM async)进行异步执行,并使用普通工具(如foreach或更好的集合拆分器)来获得对异常处理的所有自由和控制。

这个问题非常简短,更通用,需要更多信息。你能补充更多的解释吗?嗨,纳文,我现在已经包括了更多的细节。嗨,毛罗,我已经编辑了我的问题,没有更多的细节和疑问。请检查和帮助。