Mule ESB 数据库批量和批处理

Mule ESB Database Bulk and Batch Process

您好,我正在尝试从一个 table 中获取记录并插入到另一个 table(MS SQL)中,当我获取它作为键值出现时,我正在使用批处理来提交大小为 1000,但是当 2000 条记录出现时,只有两行插入 table。 我尝试使用批量模式,但批量模式要求动态查询 以下是我的查询 INSERT INTO Sample VALUES( #[payload.Index], #[payload.Name]) 有效载荷是 {Index=1,Name=XX},{Index=2,Name=XX},{Index=3,Name=XX}等 请帮助我如何在 Mule ESB 中使用批量模式以及我可以为 this.Batch 编写的动态查询只是发布第一行所以我认为在批处理中使用批量将提前解决我的 problem.Thanks!!!

您可以将 mule bulk mode = "true"parameterized query 一起使用。

<db:insert config-ref="Database_Configuration" bulkMode="true" doc:name="Database">
            <db:parameterized-query>
                <![CDATA[INSERT INTO Sample(column1, column2) VALUES( #[payload.Index], #[payload.Name])
            ]]></db:parameterized-query>
</db:insert>

看看这个 bulk mode link from mule

Enable to submit collections of data with one query, as opposed to executing one query for every parameter set in a collection. Enabling bulk mode improves the performance of your applications as it reduces the number of individual query executions. Bulk mode requires a parameterized query with at least one parameter.

只需确保您的 payload 属于 Collection 类型即可进入 bulk mode

在您的 log4j2.xml 中,为 debug 模式下的数据库模块添加日志记录,以查看 mule 传递给数据库的实际查询。非常适合调试。

 <AsyncLogger name="org.mule.module.db" level="DEBUG"/>

请注意 bulk mode 不适用于 batch-processing。 2 中的任何一个都可以,但如果您的目的只是插入数据,bulk-mode 比批处理更有效。