【问题标题】:MuleSoft ESB Batch TransactionsMuleSoft ESB 批量事务
【发布时间】:2018-03-10 13:53:29
【问题描述】:

感谢任何帮助。这是我试图在 Mulesoft 中重现的场景。

一个表中有 1,500,000 条记录。这是我们当前使用的流程。

开始交易。

从表中删除所有记录。

从平面文件重新加载表格。

提交交易。

最后我们需要文件处于良好状态,从而使用事务。如果有任何失败,表中的数据将被回滚到最初的有效状态。

我能够通过使用

有什么想法可以让它在 Mulesoft 中工作吗?

再次感谢。

【问题讨论】:

    标签: mule mule-studio mule-component mule-esb


    【解决方案1】:

    工作流程略有不同,但如何:

    • 从平面文件加载临时表
    • 如果成功删除原始表
    • 将临时表重命名为原始表名

    您可以保留 Mule 批处理工作流来加载临时表而忘记回滚。

    【讨论】:

    • 谢谢杰森。非事务性解决方案的问题在于,我并非在所有情况下都涵盖在内。如果在导入过程中出现连接或服务器问题,这将使数据处于错误状态。而 SQL Server 会在启动时看到事务未完成并回滚。
    • 我明白你的意思。在 Mule 批处理中,“完成时”阶段为您提供成功或失败记录的统计信息。您可以使用它来确定是否将临时表换成原始表。一个好处是,您可以成功记录,不仅取决于写入数据库,还取决于加载文件甚至数据验证。
    【解决方案2】:

    为此,您可以尝试以下方法:

    • 使用 XA 事务(因为将使用多个连接器, 无论是否使用相同的交通工具)
    • 在事务中登记自定义 Java 代码中使用的资源。

    这也可以在相同的传输中应用(例如,Mule 配置上的 JDBC 和 Java 组件上的),因此它不限于 PoC 中演示的案例,它仅供参考。

    【讨论】:

    • 谢谢桑吉特。我会试一试,让你知道。我是新手,所以还不确定是否要使用自定义 Java 代码。
    • @Gonzo 是的,如果有任何问题,请尝试并告诉我
    【解决方案3】:

    请参考这篇文章https://dzone.com/articles/passing-java-arrays-in-oracle-stored-procedure-fro

    从临时表轮询记录。您可以用任意数量的记录构造数组。 100K 大小总共只涉及 15 次往返。

    要确定错误记录,您可以在错误表中插入记录,但这必须在数据库过程中实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多