0

我正在尝试创建一个流,其中可能有多个数据库入站端点。流程如下:

  1. 从表 X 数据库 A 中获取 X.status (表 X 列状态) = 'new' 的行。
  2. 从表 Y 数据库 B 中获取行,其中 Y.some_id = X.another_id。X 是从步骤 (1) 中检索到的数据行。
    1. 将新行插入表 Z 数据库 B.

我意识到可能有一个数据库入站端点。有什么办法可以用 Mule 完成这个吗?

环境:骡子3.4

4

2 回答 2

2

您可以利用<composite-source />范围在流程中声明多个消息源。

基本上你的流程看起来像这样:

<flow ... >
<composite-source>
<jdbc:inbound-endpoint ... />
<jdbc:inbound-endpoint ... />
</composite-source>
...
</flow>

该文档页面应为您提供有关该主题的更多信息

于 2013-09-03T10:41:02.730 回答
1

您的第一个数据库调用将是入站的,第二个将是出站的。由于第一个 DB 调用正在从数据库中读取,它将是入站的,而第二个正在接收数据,这意味着它将是一个出站调用。

步骤 1) 入站数据库调用 - 从数据库 A(表 X,列状态)读取。

第 2 步)结果(有效负载)很可能是一个列表或地图列表。您可以使用 groovy 脚本查询各个字段并设置流变量。例如

因为您有多行进入,所以使用集合拆分器拆分每一行记录非常重要。

查询状态变量:#[flowVars['Var']['status']]。同样,您可以查询其余字段。

现在您已从数据库 A 中准备好数据集,为您的数据库 B 编写查询并使用流变量(如上所述)查询 Y.some_id。例如“其中 Y.some_id=#[flowVars['Var']['another_id']]”

步骤 3) 在同一个出站连接中,您可以在数据库 B (table-Z) 中进行插入。使这一切成为可能的原因是您正在使用特定的数据库连接器。

一些建议:1)使数据库连接器和查询全局化(在流程之前) 2)使用 HTTP 出站端点,以便您可以控制从浏览器运行的流程。

希望这可以帮助。

于 2013-09-06T15:28:46.653 回答