我是靠谱客的博主 感性海燕,最近开发中收集的这篇文章主要介绍Apache Camel 3 –骆驼核心vs骆驼核心引擎(较小的核心),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Camel团队目前正在忙于Apache Camel 3的开发。已经完成了许多工作,到目前为止,我们已经发布了3个里程碑版本。 下一个里程碑版本4具有一些出色的创新功能,这些功能我将在接下来的几个月中发布。

该博客的主题是我们在将骆驼核拆分成较小的模块方面所做的工作,您现在可以轻松地仅选择所需的模块。

如果我们看一下骆驼核心JAR的依赖关系树,您会发现它已被分成许多模块,如下所示:

[INFO] +- org.apache.camel:camel-core:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-api:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-base:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-jaxp:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-management-api:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-support:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-util:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-util-json:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-bean:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-browse:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-caffeine-lrucache:jar:3.0.0-SNAPSHOT:compile
[INFO] |
|
- com.github.ben-manes.caffeine:caffeine:jar:2.7.0:compile
[INFO] |
|
+- org.checkerframework:checker-qual:jar:2.6.0:compile
[INFO] |
|
- com.google.errorprone:error_prone_annotations:jar:2.3.3:compile
[INFO] |
+- org.apache.camel:camel-controlbus:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-dataformat:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-dataset:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-direct:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-directvm:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-file:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-language:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-log:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-mock:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-properties:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-ref:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-rest:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-saga:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-scheduler:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-seda:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-stub:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-timer:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-validator:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-vm:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-xpath:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-xslt:jar:3.0.0-SNAPSHOT:compile
[INFO] |
- org.slf4j:slf4j-api:jar:1.7.25:compile

在Camel 2.x中,所有这些模块都包含在同一个骆驼核心JAR中​​。

为了使从Camel 2.x到3.0的迁移以及易于使用,我们将保持骆驼核心与Camel 2.x中的JAR依赖项相同。 因此,以上输出仅来自在您的Maven pom.xml文件或gradle构建文件中声明对camel-core的依赖。

但是,骆驼3里程碑4即将推出的功能是轻松选择所需的东西。 例如,下面显示了一个依赖关系树,其中我们只使用了尽可能少的树(使用新的camel-core-engine JAR作为依赖关系):

+- org.apache.camel:camel-core-engine:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-api:jar:3.0.0-SNAPSHOT:compile
[INFO] |
|
- org.apache.camel:camel-util:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-management-api:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-support:jar:3.0.0-SNAPSHOT:compile
[INFO] |
- org.apache.camel:camel-core:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-base:jar:3.0.0-SNAPSHOT:compile
[INFO] |
- org.apache.camel:camel-properties:jar:3.0.0-SNAPSHOT:compile

为了说明这一点,我们提供了2组示例

  • 骆驼示例主要
  • 骆驼示例主要微型

前者使用骆驼核心作为依赖关系,其中包括所有核心组件等。后者是微小的依赖关系集,仅包含所需的东西。 该示例仅使用bean和quartz2组件,因此您需要将它们添加为依赖项:

依赖关系树如下(请注意,JAXB被排除在测试范围之外)

[INFO] --- maven-dependency-plugin:3.1.1:tree (default-cli) @ camel-example-main-tiny ---
[INFO] org.apache.camel.example:camel-example-main-tiny:jar:3.0.0-SNAPSHOT
[INFO] +- org.apache.camel:camel-core-engine:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-api:jar:3.0.0-SNAPSHOT:compile
[INFO] |
|
- org.apache.camel:camel-util:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-management-api:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-support:jar:3.0.0-SNAPSHOT:compile
[INFO] |
- org.apache.camel:camel-core:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.apache.camel:camel-base:jar:3.0.0-SNAPSHOT:compile
[INFO] |
- org.apache.camel:camel-properties:jar:3.0.0-SNAPSHOT:compile
[INFO] +- org.apache.camel:camel-main:jar:3.0.0-SNAPSHOT:compile
[INFO] +- org.apache.camel:camel-bean:jar:3.0.0-SNAPSHOT:compile
[INFO] +- org.apache.camel:camel-quartz2:jar:3.0.0-SNAPSHOT:compile
[INFO] |
+- org.quartz-scheduler:quartz:jar:2.3.1:compile
[INFO] |
|
+- com.mchange:mchange-commons-java:jar:0.2.15:compile
[INFO] |
|
- com.zaxxer:HikariCP-java7:jar:2.4.13:compile
[INFO] |
- com.mchange:c3p0:jar:0.9.5.4:compile
[INFO] +- com.sun.xml.bind:jaxb-core:jar:2.3.0:test
[INFO] +- com.sun.xml.bind:jaxb-impl:jar:2.3.0:test
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.11.2:runtime
[INFO] +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] - ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO]
- org.slf4j:slf4j-api:jar:1.7.25:compile

如果我们比较两个示例(包括logger等)中JAR的大小,则有:

  • camel-example-main(骆驼核心): 48个JAR文件,总计9.3 MB
  • camel-example-main-tiny(骆驼核心引擎): 21个JAR文件,总计7.4 MB

如果我们运行两个示例,那么您还可以看到使用camel-core-engine时加载到JVM中的类的数量要少一些:

  • camel-example-main(camel-core): 加载了3666个类
  • camel-example-main-tiny(骆驼核心引擎): 加载了3430个类

好的,这里的减少不是那么明显,但是可以预期,因为Camel将延迟使用正在使用的组件,并且该示例仅使用bean和石英组件。 但是,类路径扫描会更快一些,因为磁盘大小大约减少了25%,JAR文件减少了50%。

Apache Camel 3还有很多其他很棒的东西,我将在今年夏天开始发布该博客之前发布博客(预计于2019年9月/ 10月发布)。

翻译自: https://www.javacodegeeks.com/2019/06/camel-core-camel-core-engine-smaller-core.html

最后

以上就是感性海燕为你收集整理的Apache Camel 3 –骆驼核心vs骆驼核心引擎(较小的核心)的全部内容,希望文章能够帮你解决Apache Camel 3 –骆驼核心vs骆驼核心引擎(较小的核心)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部