我正在尝试创建一个流,其中可能有多个数据库入站端点。流程如下:
- 从表 X 数据库 A 中获取 X.status (表 X 列状态) = 'new' 的行。
- 从表 Y 数据库 B 中获取行,其中 Y.some_id = X.another_id。X 是从步骤 (1) 中检索到的数据行。
- 将新行插入表 Z 数据库 B.
我意识到可能有一个数据库入站端点。有什么办法可以用 Mule 完成这个吗?
环境:骡子3.4
我正在尝试创建一个流,其中可能有多个数据库入站端点。流程如下:
我意识到可能有一个数据库入站端点。有什么办法可以用 Mule 完成这个吗?
环境:骡子3.4
您可以利用<composite-source />
范围在流程中声明多个消息源。
基本上你的流程看起来像这样:
<flow ... >
<composite-source>
<jdbc:inbound-endpoint ... />
<jdbc:inbound-endpoint ... />
</composite-source>
...
</flow>
该文档页面应为您提供有关该主题的更多信息
您的第一个数据库调用将是入站的,第二个将是出站的。由于第一个 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 出站端点,以便您可以控制从浏览器运行的流程。
希望这可以帮助。