【问题标题】:Dynamic Camel route configuration at deployment time: Java DSL or XML DSL?部署时动态 Camel 路由配置:Java DSL 还是 XML DSL?
【发布时间】:2020-07-15 18:37:36
【问题描述】:

让我以我对 Apache Camel 还是很陌生的事实作为开头。我仍在尝试了解这一切是如何工作的,以及需要做什么(以及如何做)才能达到特定的效果。

我正在尝试开发一个 Spring Boot 应用程序,该应用程序将使用 Apache Camel 来处理与许多可能的来源和目的地之间的数据传输(也可能还有接收)。该应用程序的目的是提供一种方法来产生/生成网络流量,在网络应用程序级别,该流量将被馈送到另一个 Spring Boot 应用程序 - 我们称之为目标。我们正在尝试观察和测量各种网络负载对目标的影响。

我们希望能够通过多种协议传输数据,包括:ftp、http/s、文件系统 (nfs)、各种邮件协议(smtp、pop)以及用于语音和视频的数据流协议。稍后可能会添加其他协议。数据本身无关紧要,我们只需要能够通过各种负载的各种协议传输数据。

这些应用程序/服务将在容器化环境 (Docker) 中运行,该环境将在我们的本地开发和测试环境中运行,也可能在 AWS 等云环境中运行。我们使用过 Docker、Ansible、Terraform,目前正在努力使用 Kubernetes 和 Istio 来管理这些应用程序的配置、部署和操作。

我们需要能够为特定部署提供特定的 Camel 路由配置。

似乎配置 Camel 路由的首选方法是通过 Java DSL,而不是 XML DSL。 Camel 文档和我发现的几乎所有其他信息源都强烈倾向于使用 Java DSL。 XML DSL 路由配置的例子非常少。

我最初的印象是,走 Java DSL 路线(请原谅双关语)不能很好地满足我们需要能够部署具有特定路线配置的 Camel 应用程序。您似乎需要将 Java DSL 定义的路由配置硬连线到代码中。

我们认为通过可包含在部署中的 XML 文件提供特定的路由配置会更容易,因此我一直在尝试调查和试验 XML DSL。也许我们在这方面是错误的。

我向社区提出的问题是:考虑到我上面所描述的内容,Java DSL 方法是否可以用来满足我所描述的需求?我们能否以允许动态路由配置的方式使用 Java DSL?请记住,我们不会在操作期间尝试更改配置,而只是在执行部署的过程中。

如果 Java DSL可以用于此目的,如果可以提供指向文档、示例等的指针,将不胜感激。

【问题讨论】:

    标签: spring-boot apache-camel


    【解决方案1】:

    我们的团队有几个项目使用 Java DSL 来构建路由。为了使它们动态化,有一些控制结构用于根据配置迭代和设置端点。这对我们有用,因为路线基本上都是一样的,只是来源和汇点不同。

    如果您可以以不涉及重新部署应用程序的方式动态添加/更改 XML DSL 文件,那么这可能是一条可行的路线。例如,可以将camel.springboot.xml-routes 属性更改为指向根据需要更改的文件夹。

    【讨论】:

      【解决方案2】:

      对于您的用例,您也可以使用 XML DSL。无论如何,下面的书通过示例涵盖了 Camel 开发的大部分方面。在本书中,作者描述了 XML DSL 在大多数 java DSL 示例中的使用。 https://www.manning.com/books/camel-in-action-second-edition 在下面的 github 存储库中,您可以找到上述书中列出的所有示例的源代码。 https://github.com/camelinaction/camelinaction2

      使用 Spring Boot 的 Apache Camel 的简单教程和 github 存储库。 https://www.baeldung.com/apache-camel-spring-boot https://github.com/eugenp/tutorials/tree/master/spring-boot-modules/spring-boot-camel

      用于将 Spring Boot 容器应用程序构建和部署到 Kubernetes 集群中的 Maven 插件 https://maven.fabric8.io/

      如果您的公司能够为您的工作提供一些资金,请查看以下链接,该链接提供围绕 Camel 的商业产品。 https://camel.apache.org/manual/latest/commercial-camel-offerings.html

      谢谢 马杜·古普塔

      【讨论】:

        猜你喜欢
        • 2016-05-10
        • 1970-01-01
        • 2022-06-14
        • 2018-02-17
        • 2012-07-20
        • 2014-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多