【问题标题】:Embedding jetty for Apache camel为 Apache 骆驼嵌入码头
【发布时间】:2016-07-20 19:46:08
【问题描述】:

我有一个用 Apache camel 开发的文件传输路由。我想将 Jetty 服务器嵌入到这个项目中,这样我就可以在不将其部署到另一台服务器的情况下保持服务运行。如果有人可以放一些代码,那将非常有帮助。

谢谢。

【问题讨论】:

标签: apache-camel embedded-jetty


【解决方案1】:

您应该使用Camel's Jetty component 并声明一个消费者,这将自动调出一个嵌入式 Jetty:

from("jetty:http://localhost:{{port}}/myapp/myservice")
    .process(new MyProcessor());

【讨论】:

  • 您将在哪里部署此代码?我的意思是你将如何运行这段代码?他的终极问题是:)
  • 问题是如何将嵌入式 Jetty 包含到 Camel 项目中,而不是如何运行或部署它。
  • 可能是我通过阅读此语句错误地解释了它 - '以便我可以保持服务运行而不将其部署到另一台服务器'
【解决方案2】:

您有 2 个选项,它们很受欢迎:

  1. 使用 maven camel:run 插件,你必须在你的 pom 文件中启用它并运行命令。 (我不太确定他们是否在内部使用 Jetty,但它确实有效)

  2. Spring boot,现在使用门户网站创建项目非常容易。

  3. 对于 Jetty 还有一个 maven 插件,即 mvn jetty:run

【讨论】:

  • 使用构建系统在生产环境中运行应用程序是一种不好的做法。
  • 是的,但这也取决于它的使用方式。有些项目在生产中使用这个选项,这取决于用例的敏感性和执行方式,这也是我提到 Spring boot 的原因。
  • 是的,我也见过有数据库表的系统,其中包含一百万条记录,并且没有任何查询的主键或索引。有人选择接受一个糟糕的设计并采用一个糟糕的实践方法这一事实绝不意味着可以推广这种行为:) 虽然 Spring Boot 和 Camel 是一个很棒的组合,但仅使用 Spring Boot 运行 Camel 并不能允许您将 Jetty 嵌入到您的应用中。
  • 我当然同意您对数据库表示例的观点。但不适用于骆驼的 maven 插件。它给了我这个优势: 1. 运行一个纯开源的集成流程,这意味着我不必支付任何服务器许可或生产支持成本 2. 它只是一个不太复杂的运行时,仅此而已。您总是可以编写一些脚本,以保持服务器即使由于某种原因崩溃。当然,如果它要处理一些关键的金融交易,运行它并不是一个好主意,但对于基于文件的简单用例来说,它是一个很好的选择。
  • 是的,就像 Gabriel 的文章中提到的那样,这个 maven 插件选项非常适合 docker :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多