Apache Camel 3 –新增功能前10名
Apache Camel 3于2019年11月28日星期四發(fā)布,也正是美國感恩節(jié)這一天。 這不是故意的,但我們可以向社區(qū)提供了一個全新的主要版本的Camel,這是我們的極大感謝–這并不經(jīng)常發(fā)生。 實際上,距離駱駝2上街已經(jīng)10年了。 因此,第三代早就該了。
這篇博客文章重點介紹了駱駝v3中值得注意的新功能和改進。
1)駱駝現(xiàn)在是一個項目家族
Apache Camel現(xiàn)在是一個項目系列(在撰寫本文時為3):
- Camel 3 :整合框架瑞士整合之刀
- Camel K :Kubernetes和Knative上的輕量級無服務(wù)器集成平臺Camel
- Camel Quarkus :用于Quarkus優(yōu)化的JVM和本機編譯Java(GraalVM)的Camel擴展
Camel代碼庫非常大,我們?yōu)槭褂肅amel的新創(chuàng)新項目設(shè)置了子項目。 第一個子項目是以無服務(wù)器方式在Kubernetes上將Camel作為云原生運行,從而成為CamelK。然后Camel Quarkus開始以非??焖俚膯雍头浅P〉膬?nèi)存占用量來生產(chǎn)Java和Camel,主要用于基于容器的部署。
2)新網(wǎng)站
Camel 3的主要目標是最終改造舊的舊網(wǎng)站,以使用現(xiàn)代技術(shù),并能夠從源代碼自動生成內(nèi)容。 到目前為止,我們已經(jīng)花費了很多年的時間,因為我們已經(jīng)在最近的許多Camel 2.x版本中構(gòu)建了工具,可以使我們更加接近。 在2019年底,駱駝社區(qū)和其他人加緊為新網(wǎng)站提供了新的藝術(shù)品,徽標以及外觀和風格-非常感謝!
對于Camel 3.x,我們將繼續(xù)改進網(wǎng)站和文檔。 這對于我們來說更容易實現(xiàn),對于人們來說也可以做出更改,因為它只是常規(guī)的GitHub PR來提供更新。 我們熱愛貢獻。
佐蘭(Zoran)的新外觀和感覺很有趣,他添加了一些寶石。 如果您凝視首頁,那么應(yīng)該會看到弧形邊框的動畫;)
3)JAVA 11
Camel 3是第一個支持Java 11的正式版本。第一個3.x版本仍將支持Java 8,但預計將在2020年晚些時候發(fā)布。但是,我們希望提供Java 8支持以幫助遷移Camel。可能會在一段時間內(nèi)限制使用Java 8的2.x用戶。
4)模塊化的駝色核心
駱駝核心已經(jīng)從1 JAR模塊化到33 JAR。 核心功能已拆分為:
camel-base
camel-caffeine-lrucache
對于駱駝最終用戶,則僅涉及幾個JAR。
camel-api包含用于Camel的公共API(例如CamelContext,Endpoint,Exchange,Message等接口)。
camel-support包含用于構(gòu)建Camel路由和應(yīng)用程序的基類和RouteBuilder。 此JAR還包含用于構(gòu)建自定義Camel組件和其他類型插件的必要基類。
駱駝核心中的組件也已被外部化為單個組件:
camel-beancamel-log
camel-stub
然后,駱駝最終用戶可以只選擇他們需要的東西,或者繼續(xù)使用所有東西。
因此,我們將camel-core和camel-core-engine作為兩個初始依賴項。 您可以使用camel-core,它為您提供與Camel 2.x類似的所有JAR。 當您使用駱駝核心引擎時,您會獲得構(gòu)成功能駱駝的最少JAR集。
camel-core包含33個JAR,以及
camel-core-engine包含12個JAR。
5)更快的啟動和更低的足跡
我們減少了核心Camel的大小和加載的類的數(shù)量。 例如,在駱駝2中加載了大約5200個類,而在駱駝3中已減少到大約4300個類。
我們還在內(nèi)核中進行了許多較小的優(yōu)化,以減少分配的Java對象的數(shù)量以及speeup初始化和其他方式。 我們已經(jīng)使用JVM性能分析工具來協(xié)助和發(fā)現(xiàn)瓶頸。
改進的另一個方面是減少Java反射。 在Camel 2中,所有Camel組件,端點和路徑的配置都是基于反射的。 在Camel 3中,我們有源代碼生成的Java代碼用于配置,它允許我們使用直接Java調(diào)用而不是反射。
另一個相似的領(lǐng)域是Camel的類型轉(zhuǎn)換器,它在Camel 2中基于Java反射(您可以構(gòu)建不基于反射的自定義類型轉(zhuǎn)換)。 在Camel 3中,我們還生成Java源代碼,這意味著類型轉(zhuǎn)換是運行時的直接Java調(diào)用。
如果可能,我們還將初始化邏輯移到了早期階段。 例如,有一個新的構(gòu)建階段,它允許Camel在構(gòu)建項目期間進行特殊的初始化(這需要Camel Quarkus)。
所有這些優(yōu)化提高了Camel的啟動性能并減少了內(nèi)存開銷。 使用Camel Quarkus,您可以在本地編譯Camel應(yīng)用程序,并使其在30毫秒內(nèi)啟動,并具有完整的HTTP REST服務(wù)器以及運行狀況檢查和指標,僅消耗10mb的內(nèi)存(RSS)。
我們還需要在Camel 3.x中處理一些議程,以進一步優(yōu)化Camel核心。
6)類型安全端點DSL
當您在端點中配置錯誤時,使用URI字符串配置端點的Camel最終用戶都將遇到此問題,這將導致Camel啟動失敗。
在Camel 3中,我們?yōu)槎它c提供了新的類型安全DSL,您可以在Java路由中使用它。 您可以繼續(xù)使用傳統(tǒng)的URI字符串,但是如果您想嘗試端點DSL,則需要將camel-endpointdsl添加到類路徑中。 然后,您應(yīng)該擴展EndpointRouteBuilder而不是RouteBuilder來訪問端點DSL。
這是一個不帶端點DSL的基本示例:
來自(“ timer:click?period = 3000&fixedRate = true”)
.to(“ seda:foo?blockWhenFull = true”);
from(timer(“ click”)。period(3000).fixedRate(true))
.to(seda(“ foo”)。blockWhenFull(true));
您還可以在源代碼中找到一個小例子 。
7)主動路由引擎
Camel中的路由引擎已在內(nèi)部進行了響應(yīng)式配置,并且所有EIP都經(jīng)過了改裝以響應(yīng)式方式工作。 但是,這僅是內(nèi)部的,面向最終用戶和組件開發(fā)人員的Camel API均基于現(xiàn)有的回調(diào)行為。
在我們跳到最低版本的Java 11(然后我們可以支持Java 9 flowable API)之后,我們將在以后介紹并使用面向客戶端的反應(yīng)式API。
Camel已經(jīng)在專用的Camel組件中與諸如Vert.X,RxJava和Reactor Core的反應(yīng)框架集成。
8)駱駝主
我們引入了駱駝-main作為獨立的JAR,這使得僅運行Camel更加容易。 有一些源代碼示例演示了如何執(zhí)行此操作。
我們還使用camel-main來提供通用代碼來配置和引導Camel,以用于獨立,Spring Boot,Camel K和Camel Quarkus。 這使我們可以共享相同的代碼和配置選項。
9)駱駝微外形
Camel 3現(xiàn)在可以更好地與Eclipse Microprofile集成在一起,并且我們具有用于Microprofile配置,指標,運行狀況檢查和容錯能力的Camel組件。
即將發(fā)布的Camel版本中將包含更多組件。 這些微輪廓組件也被Camel Quarkus使用。
10)其他改進
Camel 3現(xiàn)在支持JUnit 5進行單元測試,測試組件的后綴為-junit5。
Camel Registry現(xiàn)在也是可寫的,因此您可以在運行時或通過單元測試等將bean添加到注冊表中。
您還可以將端點(生產(chǎn)者)配置為延遲啟動。 默認情況下,駱駝在故障快速模式下工作,這意味著在啟動過程中無法連接到外部系統(tǒng)的駱駝組件可能會導致路由在啟動時失敗。 對于Camel 3,您現(xiàn)在可以將這些端點配置為延遲啟動,這意味著路由將啟動,并且在將消息路由到端點時它們將首先失敗。
Camel還允許將您的路由配置為在啟動過程中受到監(jiān)管,從而允許Camel通過重新啟動出現(xiàn)故障的路由,以更安全的方式更智能地啟動路由。
11)遷移至駱駝3
我們當然已經(jīng)清理了代碼庫,例如刪除了所有不贊成使用的API和組件。 我們還調(diào)整了一些API,以使最終用戶更容易使用它們,并且對Java 8 lambda更加友好。
在內(nèi)部,我們還調(diào)整了路由模型,以使其更易于擴展到新的DSL。 并且在Camel K中啟動了YAML DSL。
從向后兼容性的角度來看,Camel 3主要是與常規(guī)Camel應(yīng)用程序兼容。 但是,如果您在Camel中使用某些更高級的功能和其他插件,則需要遷移。 此外,必須遷移和重新編譯自定義組件。 還有其他調(diào)整,例如Spring Boot用戶必須使用org.apache.camel.springboot作為groupId而不是org.apache.camel等。所有詳細信息都可以在遷移指南中看到。
如果您決定繼續(xù)自己的駱駝之旅,那么祝您遷移順利。 對于剛加入駱駝的新用戶,祝您好運。
12)獎金:新組件
Camel 3中有30個凈新組件,例如用于Amazon AWS和GraphQL的更多組件,還值得一提的是與Debezium的集成,Debezium是一個更改數(shù)據(jù)捕獲項目,用于從數(shù)據(jù)庫中獲取更改事件。
翻譯自: https://www.javacodegeeks.com/2019/12/apache-camel-3-whats-new-top-10.html
總結(jié)
以上是生活随笔為你收集整理的Apache Camel 3 –新增功能前10名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓老游戏网站(安卓老游戏)
- 下一篇: (linux boost)