使用 Camel XML 路线的充分理由是什么?

What are good reasons for using Camel XML routes?

Camel Java DSL 提供类型安全、代码完成和对重构的适当支持。它还有助于以一种很好的方式模块化和(单元)测试您的代码。

谈到 Camel XML 语法,我只看到了能够在运行时修改和重新加载路由的优势(例如通过 hawtio)。

显然我在这里确实遗漏了一些东西 - 那么今天使用 Camel XML 路线背后的基本原理是什么?

首先,当您说 XML 时,您是指 Spring XML DSL 还是蓝图 XML DSL?虽然它们共享大部分语法,但并不完全相同。 Blueprint XML DSL 是为 OSGi 环境(即 Apache Karaf 运行时)定义 Camel 路由的首选方式,而 Spring XML DSL 现在或多或少是时代的遗产,你可以仅使用 Spring 到 XML.

话虽如此,我认为这真的归结为个人偏好 - 许多开发人员仍然更喜欢 XML 而不是 Java 来定义路由,并且发现它更容易阅读和遵循。我自己一直更喜欢 Java DSL,因为它更灵活、更强大,但我不得不承认 XML 提供了更好的路线概览。

  1. 就地编辑路线(尽管我不鼓励这样做)
  2. 快速且肮脏的一次性路线(例如,从测试到质量检查环境的路线)或非常简单的项目 - 当您有像 karaf 或 servicemix 这样的容器时。无需启动您的 IDE/compile。只需写下即可部署文件夹。
  3. 对于非开发人员来说可能更容易

这是品味和喜好的问题。

我都用过,我不得不说 java dsl 更容易使用,也更强大。

但最好的方法是将它们结合起来,尤其是当您要部署到像 Karaf 这样的 OSGI 环境时。

使用蓝图来定义您的 bean 和 routeBuilder bean 并绑定它们。实际的实现是在 routeBuilder 类 中完成的。在蓝图中,您可以定义属性并执行一些其他操作,但路由的实际行为是在 java.

中完成的