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