gpt4 book ai didi

java - Apache Camel : What is difference between Message Translator and Content Enricher with Example?

转载 作者:行者123 更新时间:2023-12-02 08:54:55 35 4
gpt4 key购买 nike

我点击数据库得到 10 名员工;基于每个员工,我访问另一个数据库并获取一些信息并将其连接起来。

根据我的理解,它可以在 .process() 或 .enrich() (使用聚合器)中完成

                    .to("jdbc:masterdata?outputClass=com.diavry.integrator.Employee")
.to("log:?level=INFO&showBody=true")
.process(e -> {
List<Employee> eiEmployees = (List<Employee>) e.getIn().getBody(List.class);

for (Employee employee : eiEmployees) {

PreparedStatement statement = otherDbConnection.prepareStatement(sql);
statement.setString(1, employee.getUserid());
statement.setString(2, employee.getCompanyid());
resultSet = statement.executeQuery();
if (resultSet.next()) {
legalUnitName = resultSet.getString(1);
}
employee.setOrgstr_unitname(legalUnitName);
}
})

现在我可以在聚合器中做同样的事情,我可以用上面的代码丰富原始内容并返回。

我没有得到与上述用例相关的两者之间的区别?

最佳答案

嗯,主要区别在于您在处理器中编写了 JDBC 代码 (1)。另一个区别是您自己管理迭代以获取每个员工的详细数据。这也意味着您需要自己进行任何错误处理(如果处理在迭代过程中中止等如何恢复)。

解决这个用例的 Camel 方法是:

  1. 调用 JDBC 来获取员工
  2. Splitter将员工列表拆分为单独的消息(创建“迭代”)
  3. 每个员工的 JDBC 详细数据调用
  4. 进一步的流程详细消息或 aggregate all detail messages ,取决于您的进一步加工需求

这就是Camel的主要魔法! 无需编写大量“传输级”代码。只需编写一行 Camel DSL 即可查询数据库、启动 JMS 消费者以及您能想到的任何其他集成技术。

当然还有所有EIPs is implements这是常见的集成问题。

(1) 旁注:我建议放弃低级接口(interface) Processor,转而使用 simple Java Beans

关于java - Apache Camel : What is difference between Message Translator and Content Enricher with Example?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60544325/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com