Apache camel 如何使用Camel连接来自不同数据源的两个相同表?

Apache camel 如何使用Camel连接来自不同数据源的两个相同表?,apache-camel,Apache Camel,我正在尝试使用JavaDSL编写一些伪代码来连接来自两个不同数据库的两个相同表 例如,我在MySQL和PostgreSQL数据库中有一个Person表。希望看到所有行的并集。有人能就如何实现这一目标提出一些建议吗 更新:我尝试的是路线定义中的以下代码 from(sql:select name, age from person?datasource=xyz).to(direct:foo); from(sql:select name, age from person?datasource=abc).

我正在尝试使用JavaDSL编写一些伪代码来连接来自两个不同数据库的两个相同表

例如,我在MySQL和PostgreSQL数据库中有一个Person表。希望看到所有行的并集。有人能就如何实现这一目标提出一些建议吗

更新:我尝试的是路线定义中的以下代码

from(sql:select name, age from person?datasource=xyz).to(direct:foo);
from(sql:select name, age from person?datasource=abc).to(direct:foo);
from(direct:foo).to(stream:out);

上面的内容提取数据并合并到一个通道中,但是,我想做一些操作,如删除重复项、过滤行等。在那里,我不知道如何做。也许需要聚合器组件?

这似乎很简单,您只需记住两件事

您有来自两个位置的数据。 在聚合数据之前,需要防止数据相互碰撞。 然后,也只有到那时,你才能把它们聚合在一起

如果我尝试一下,这将是一个开始。我希望利用的功能来指定SQL结果应存储在其中的特定头。从那里,我发现在聚合后使用一个简单的处理器来处理这两条记录并执行我想要的任何逻辑会更容易一些

from("sql:select name, age from person?datasource=xyz&outputHeader=MySqlDataSet&outputType=Person")
    .to("direct:foo");
from("sql:select name, age from person?datasource=abc&outputHeader=PostgresDataSet&outputType=Person")
    .to("direct:foo");

from("direct:foo")
    .aggregate(constant(true), new GroupedExchangeAggregationStrategy())
    .completionFromBatchConsumer()
    .process(exchange -> {
         // now you have control over the exchange which has both exchanges
         // which has both properties you require.
         // manipulate, merge, and dedupe here to your heart's content.
     });

你好,拉梅什。我没有对你的问题投反对票,但如果让我猜一下原因的话,那是因为它太模糊和高层次了。由于您要问一个ApacheCamel问题,人们会认为您应该已经对编写ApacheCamel路由了解很多,如果您了解,我们希望了解您迄今为止的尝试。如果你不知道如何写Apache骆驼路线,那么现在问这个问题还为时过早。@ DavidS:现在已经和骆驼路线合作了大约九个月了,我可以说,这样的问题是这门课的标准。DavidS,我更新了原来的问题,不太清楚,作为一个正在学习的新手,我知道如何写简单的路线。但还没什么复杂的。我想看看人们是如何与camel进行数据集成的,因为我更大的动机是想看看引入技术是否有价值,就像一些camel组件一样。