【问题标题】:mule 4 what's the replacement for wiretap骡子 4 什么是窃听器的替代品
【发布时间】:2021-12-27 14:16:46
【问题描述】:

我有一个 mule 4 批处理作业,它基本上从 sftp 服务器读取一个大型 xml 文件,并在填充数据库表之前对记录进行转换和批处理。文件相当大。我需要在每天加载数据之前删除表。在 sftp 之后,我曾经在 mule 3.8.5 中使用带有 db 删除操作的窃听器,并且曾经运行良好。由于在 mule 4 中不再提供窃听功能,如何实现这一点。我尝试将 sftp 内容设置为变量,然后执行数据库删除,然后将有效负载设置为变量。我遇到了错误。我还认为将内容保存到变量是低效的,因为文件的内容非常大。我可以使用单独的调度程序进行单独的流程,但似乎效率不高。分散收集是否有意义,一条路线将删除数据库表记录,而另一条路线将读取文件内容并按上述说明进行。任何帮助将不胜感激。

【问题讨论】:

  • 您的方法有哪些错误?请具体。
  • 谢谢@aled。我无法检查错误,由于文件很大,我没有重新运行。我仍然认为将整个文件内容设置为变量感觉效率低下。我正在寻找其他方法来做到这一点,因为窃听已经消失,并且也没有不同的流程只是为了基于调度程序进行数据库删除。如果不出意外,我们可能不得不诉诸于此。我们还有许多遵循类似模式的集成。

标签: dataweave mule4


【解决方案1】:

请注意,大多数 Mule 4 组件在“高级”选项卡中都有一个“目标”配置,您可以在其中配置一个变量以及您需要从响应中提取什么到该变量中。

只需在 DB 操作上设置目标(DELETE 或 TRUNCATE),payload 将保持不变

【讨论】:

  • 谢谢@豪尔赫·加西亚。您的解决方案看起来很有希望。我的流程基本上是 SFTP Component-->DB Delete-->Transform-->BatchProcess。我在数据库删除组件高级选项卡目标变量和目标值中看到了这一点。目标值默认为有效负载。我的删除应该清除整个表,下一步是读取文件内容并进行转换。删除的目标值可能没有什么不确定 db delete 会返回任何东西。理想情况下,目标值应该是文件内容。不确定我是否正确。能否请您详细说明。
  • 嗨!基本上,您需要做的是,在 DB 组件中,在“目标变量”上设置一个变量名称(类似于“dbDeleteResponse”),并将“目标值”保留为默认值。稍后您将不会使用该变量,但这样,文件将直接从 SFTP 流式传输到 Transform 组件。
  • 谢谢,是的,我做到了,而且成功了。
【解决方案2】:

分散聚集将是一种更好的选择方法,您可以将删除操作放在一个节点中并将其包装在异步范围内,并且正如您提到的其他路线将读取文件内容。与 Wiretrap 相比,这在线程消耗方面效率更高。

是的,不建议将内容保存到变量中,并且当您使用 mule4 时,流现在是可重复的,即您可以多次读取流。所以你可以直接在scatter-gather中访问payload。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    相关资源
    最近更新 更多