Apache Camel 3 –骆驼核心vs骆驼核心引擎(较小的核心)
Camel團(tuán)隊(duì)目前正在忙于Apache Camel 3的開(kāi)發(fā)。已經(jīng)完成了許多工作,到目前為止,我們已經(jīng)發(fā)布了3個(gè)里程碑版本。 下一個(gè)里程碑版本4具有一些出色的創(chuàng)新功能,這些功能我將在接下來(lái)的幾個(gè)月中發(fā)布。
該博客的主題是我們?cè)趯Ⅰ橊労瞬鸱殖奢^小的模塊方面所做的工作,您現(xiàn)在可以輕松地僅選擇所需的模塊。
如果我們看一下駱駝核心JAR的依賴關(guān)系樹(shù),您會(huì)發(fā)現(xiàn)它已被分成許多模塊,如下所示:
[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中,所有這些模塊都包含在同一個(gè)駱駝核心JAR中??。
為了使從Camel 2.x到3.0的遷移以及易于使用,我們將保持駱駝核心與Camel 2.x中的JAR依賴項(xiàng)相同。 因此,以上輸出僅來(lái)自在您的Maven pom.xml文件或gradle構(gòu)建文件中聲明對(duì)camel-core的依賴。
但是,駱駝3里程碑4即將推出的功能是輕松選擇所需的東西。 例如,下面顯示了一個(gè)依賴關(guān)系樹(shù),其中我們只使用了盡可能少的樹(shù)(使用新的camel-core-engine JAR作為依賴關(guān)系):
+- 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為了說(shuō)明這一點(diǎn),我們提供了2組示例
- 駱駝示例主要
- 駱駝示例主要微型
前者使用駱駝核心作為依賴關(guān)系,其中包括所有核心組件等。后者是微小的依賴關(guān)系集,僅包含所需的東西。 該示例僅使用bean和quartz2組件,因此您需要將它們添加為依賴項(xiàng):
依賴關(guān)系樹(shù)如下(請(qǐng)注意,JAXB被排除在測(cè)試范圍之外)
[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如果我們比較兩個(gè)示例(包括logger等)中JAR的大小,則有:
- camel-example-main(駱駝核心): 48個(gè)JAR文件,總計(jì)9.3 MB
- camel-example-main-tiny(駱駝核心引擎): 21個(gè)JAR文件,總計(jì)7.4 MB
如果我們運(yùn)行兩個(gè)示例,那么您還可以看到使用camel-core-engine時(shí)加載到JVM中的類的數(shù)量要少一些:
- camel-example-main(camel-core): 加載了3666個(gè)類
- camel-example-main-tiny(駱駝核心引擎): 加載了3430個(gè)類
好的,這里的減少不是那么明顯,但是可以預(yù)期,因?yàn)镃amel將延遲使用正在使用的組件,并且該示例僅使用bean和石英組件。 但是,類路徑掃描會(huì)更快一些,因?yàn)榇疟P(pán)大小大約減少了25%,JAR文件減少了50%。
Apache Camel 3還有很多其他很棒的東西,我將在今年夏天開(kāi)始發(fā)布該博客之前發(fā)布博客(預(yù)計(jì)于2019年9月/ 10月發(fā)布)。
翻譯自: https://www.javacodegeeks.com/2019/06/camel-core-camel-core-engine-smaller-core.html
總結(jié)
以上是生活随笔為你收集整理的Apache Camel 3 –骆驼核心vs骆驼核心引擎(较小的核心)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java默认代码地址_Java 8默认方
- 下一篇: 查看路由 linux命令(查看路由 li