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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OneNote使用说明

Microsoft OneNote,是一套用于自由形式的信息获取以及多用户协作工具。OneNote最常用于笔记本电脑或台式电脑,但这套软件更适合用于支持手写笔操作的平板电脑,在这类设备上可使用触笔、声音或视频创建笔记。 感觉onenote就像纸质的笔记本&…

雷柏MT750S鼠标使用总结(驱动|连接|模式|续航)

【什么值得买 摘要频道】下列精选内容摘自于《无线办公好帮手 雷柏MT750S无线蓝牙鼠标体验》的片段: 驱动 雷柏MT750S的驱动软件界面比较简单,因为没有灯光的原因,软件主要是鼠标按键功能的设置,在左侧显示了各种功能&#xff0c…

1.0jpa 2.0_JPA 2.1实体图–第1部分:命名实体图

1.0jpa 2.0延迟加载通常是JPA 2.0的问题。 如果要使用FetchType.LAZY(默认)或FetchType.EAGER来加载关系,则必须在实体上进行定义,并且始终使用此模式。 仅当我们要始终加载关系时才使用FetchType.EAGER。 在几乎所有情况下都使用…

Notion,程序员最后一款笔记软件

市面上笔记软件五花八门,都各有特色。wolai、语雀、飞书、印象笔记、石墨、幕布、为知笔记.....等等,数不胜数,但我最终选择了notion,因为它实在太好用了!!!如果你之前没使用过,赶紧…

通过Main的Checkpoint Restore加快Java启动速度

Java虚拟机为已编译为字节码 (但不一定是用Java编写)的应用程序提供了托管运行时环境。 与为特定平台静态编译的代码相比,这为应用程序开发人员提供了许多好处,并且通常可以提高性能。 JVM通过垃圾回收器 (GC&#xff…

notion常用快捷键

由于我自己的电脑是window10系统,我也就只整理window系统的快捷键。notion官网上有全部快捷键的教程,链接如下: https://www.notion.so/Learn-the-shortcuts-66e28cec810548c3a4061513126766b0 这篇博客来自于我的CSDN账号,里面…

“操作无法完成因为其中的文件夹或文件已在另一个程序中打开”解决办法

在windows系统中,我们经常会遇到这样一个问题:删除某一个文件或者文件夹,被提醒:操作无法完成,因为其中的文件夹或文件已在另一个程序中打开。 这个时候我们一般会先检查是否真的有程序或者文件打开了没有关闭&#xf…

带有AngularJS资源的Spring Rest Controller

Angularjs ngResource是用于与基于REST的服务进行交互的angularjs模块。 我最近在Spring MVC的一个小型项目中使用了它,并希望记录一个对我来说很好的配置。 该控制器在工厂中运行,它支持在Hotel实体上进行CRUD操作,并支持以下方法&#xff…

【CLion】如何编译运行单个文件 (C/C++ Single File Execution插件的使用)

如果你知道如何使用 C/C Single File Execution 插件但仍然无法找到运行按钮 请直接看第五张图片 一、 这里我首先新建了一个项目,名为Demo 又在项目文件夹内新建了一个代码文件,名为TestCode 二、 然后在 File - Settings - Plugins 中搜索 C/C Single…

使用Mocks进行需求驱动的软件开发

jmock作者撰写的有关模拟框架的优秀论文 。 本文写于18年前的2004年,但其中有许多构建可维护软件系统的技巧。 在这篇文章中,我将重点介绍本文中的关键思想,但建议您阅读本文,以获取有关模拟和编程实践的重要思想。 模拟对象是测…

W10关闭警告声音

点击电脑左下角的“开始”按钮 在开始菜单中点击打开“设置” 在设置窗口中点击“个性化” 在轻松使用界面左侧点击“主题” 接着在右侧找到并点击“声音” 在弹出的窗口中点击“声音方案”下面的方框 在弹出的列表中选择“无声”,点击底部的“应用”和…

Ubuntu常用快捷键

命令行中快捷键 Tab 自动补全 Ctrla 光标移动到开始位置 Ctrle 光标移动到最末尾 Ctrlk 删除此处至末尾的所有内容 Ctrlu 删除此处至开始的所有内容 参考 Ubuntu 快捷键命令_糖糖糖-豆的博客-CSDN博客_ubuntu命令行快捷键

camel 调用soap_使用Apache Camel通过soap添加WS-Security

camel 调用soapWS-Security(Web服务安全性)是一个协议,可让您保护自己的soap Web服务。 发出Soap请求的客户端必须在Soap标头中提供登录名和密码。 服务器接收到肥皂请求,检查凭据并验证请求是否正确。 使用Apache Camel&#xf…

Typora中插入分页符

由于typora基于html&#xff0c;插入分页符的方法&#xff08;在导出成PDF时生效&#xff09;&#xff1a; <div style"page-break-after:always"></div>

使用Spring Boot Actuator监视Java应用程序

朋友不允许朋友写用户身份验证。 厌倦了管理自己的用户&#xff1f; 立即尝试Okta的API和Java SDK。 在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 您是否曾与Spring Boot Actuator合作&#xff1f; 这是一个非常有用的库&#xff0c;可帮助您…

【sublime】 按 ctrl+shift+f没有反应(系统:win10+搜狗输入法)

系统&#xff1a; win10 输入法&#xff1a; 搜狗 问题&#xff1a; sublime 按 ctrlshiftf没有反应 原因&#xff1a; sumlime 中 ctrlshiftf 与搜狗繁简切换冲突 解决&#xff1a; A. 右击搜狗输入法状态栏&#xff08;就是那个小条条&#xff09;&#xff0c;选择属性设…

SublimeText3 ctrl+f打开搜索框后怎么关闭

按esc就可以退出了&#xff0c;点那个 find all也会退出

javaone_JavaOne 2014 –有关提交的一些初步分析

javaone这些天时间不多了。 并行发生的事情如此之多&#xff0c;当然&#xff0c;最重要的Java会议就是一切。 JavaOne 2014已经关闭了CfP门&#xff0c;投票正在进行中。 程序委员会几乎没有什么可以谈论的&#xff0c;但是去年跳过了这种分析之后&#xff0c;现在是我寻求许…

Sublime打开与关闭右侧缩略图

启动sublime text 3软件&#xff0c;如图所示&#xff1b; 发现右侧缩略图占据了太大的位置&#xff0c;瞬间感觉整个世界都不好了&#xff1b; 要想关闭这个缩略图&#xff0c;需要到菜单视图里面设置&#xff0c;首先点击菜单栏“view”——“hideMiniMap”&#xff1b;如图所…

Sublime Text 如何查看当前文件的编码格式?

打开preference->setting->输入下面代码 "show_encoding": true,"show_line_endings": true 此时保存该配置文件&#xff0c;就能够看到 sublime 最底下一行会显示文件编码格式了。以上的配置内容在 Perference → Setting─Default 都是 false 的。…