【发布时间】: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可以用于此目的,如果可以提供指向文档、示例等的指针,将不胜感激。
【问题讨论】: