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骆驼核心引擎(较小的核心)相关推荐

  1. apache camel 相关配置_Apache Camel的Java编程入门指南

    Apache Camel是一个非常实用的规则引擎库,能够用来处理来自于不同源的事件和信息.你可以在使用不同的协议比如VM,HTTP,FTP,JMS甚至是文件系统中来传递消息,并且让你的操作逻辑和传递逻 ...

  2. Apache Camel 3.1 –更多骆驼核心优化(第3部分)

    我以前曾在博客中介绍过我们在下一个Camel 3.1版本中所做的优化 博客第1部分 博客第2部分 今天,我想简短介绍一下我们已经完成的最新开发,因为我们准备在本周末或下半年准备好构建和发布Camel ...

  3. Apache Camel 3.1 –更多骆驼核心优化(第2部分)

    我以前曾在博客中介绍我们在下一个Camel 3.1版本(第1部分)中所做的优化 . 今天,我想发布大约4周后的最新状态更新. 我们集中在三个方面优化骆驼核心: 不必要的对象分配 不必要的方法调用 提高 ...

  4. 骆驼(camel)命名法_Apache Camel 3 –骆驼核心vs骆驼核心引擎(较小的核心)

    骆驼(camel)命名法 Camel团队目前正在忙于Apache Camel 3的开发.已经完成了许多工作,到目前为止,我们已经发布了3个里程碑版本. 下一个里程碑版本4具有一些出色的新创新功能,这些 ...

  5. Apache Camel核心概念

    1. Camel中的相关概念 1.1 ROUTING ENGINE(路由引擎) Camel的路由引擎是消息移动的实际执行者,但并未暴露给开发者:不过作为开发者,我们应该意识到它的存在:并且它做了所有繁 ...

  6. camel apache_如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼

    camel apache 今天,我继续在youtube上练习,并录制了10分钟的视频,介绍了如何创建一个新的Camel and Quarkus项目,该项目包括Rest和HTTP服务以及开箱即用的健康检 ...

  7. 如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼

    今天,我继续在youtube上练习,并录制了10分钟的视频,介绍了如何创建一个新的Camel and Quarkus项目,该项目包括Rest和HTTP服务以及开箱即用的健康检查和指标. 然后比较以JV ...

  8. apache camel_您的Apache Camel应用程序现在包括现成的文档

    apache camel 几个月前,我在博客中发布了有关即将发布的2.15版本的功能,该功能包括获取有关在端点上配置的每个属性的详细信息的功能-Apache Camel,请向我解释这些端点选项的含义 ...

  9. Apache Camel 3 –新增功能前10名

    Apache Camel 3于2019年11月28日星期四发布,也正是美国感恩节这一天. 这不是故意的,但我们可以向社区提供了一个全新的主要版本的Camel,这是我们的极大感谢–这并不经常发生. 实际 ...

最新文章

  1. mongodb 查多个不等于_高可用架构之商城的mongodb设计分析
  2. 4月24日Serverless Developer Meetup上海亮相
  3. true,false组合问题
  4. Android Bluetooth BLE相关开发资源汇总
  5. JWT.NET的使用
  6. jq 直接调用php文件_PHP性能分析工具,你在用哪一个?
  7. log4cplus指南
  8. 低频声音功率放大器电子设计报告
  9. ubuntu使用cmake编译coffe
  10. 【Apache NIFI 操作】Apache NiFi源码目录结构--nifi-nar-bundles
  11. VCSA6.7移除添加vSAN磁盘组
  12. x86服务器与arm服务器
  13. 一般服务器监控什么项目,服务器中需要监控的项目
  14. 解析机器人与人工智能领域的创新创业
  15. erdas叠加显示_ERDAS影像融合
  16. can差分线阻抗_差分阻抗
  17. 【合泰HT3252352串口通信实验注意点】
  18. 基于jsp和servlet的蛋糕店售卖网站商城系统javaweb点心铺源码mysql
  19. mysql生成树形数据_mysql 如何实现对树形数据的递归查询
  20. 背诵日语单词的手机软件有哪些

热门文章

  1. P1955-[NOI2015]程序自动分析【并查集,离散化】
  2. [CF850F] Rainbow Balls
  3. M-SOLUTIONS Programming Contest 2020总结
  4. 【模拟】生日蛋糕(jzoj 1613)
  5. 【dfs】【链表】连通图 (ssl 1758)
  6. [NOIP2016 提高组] 天天爱跑步(树上差分)
  7. 34、JAVA_WEB开发基础之EL表达式和标签
  8. 面试官问:为什么 Java 线程没有 Running 状态?我懵了
  9. Java AIO 编程
  10. jQuery 基础教程 (一)之jQuery的由来及简介