apache.camel_Apache Camel 3.1 – XML路由的快速加载
apache.camel
Camel 3.1中添加的一項功能是能夠更快地加載XML路由。 這是我們為使Camel變得更小,更快而進行的總體工作的一部分。
您可能會說ewww XML。 但坦率地說,有很多Camel用戶使用XML定義路由來構建應用程序。 在Camel 2.x中,您將不得不使用Spring或OSGi Blueprint來處理XML路由,這兩種路由在現代云原生世界中都變得越來越重要。
在Camel 3中,我們有一個名為Camel-main的獨立模式。 我們使用camel-main作為引導和配置Camel的通用方法,以用于獨立的,camel-k,camel-quarkus以及大部分的camel-spring-boot。 這樣可以確保在這些運行時中獲得統一一致的開發人員體驗。
好的,這可能是另一個博客帖子深入探討駱駝主程序的主題,它是快速運行的絕佳運行時……只是駱駝。
因此,我想在此博客文章中說的是,我們使加載XML路由變得更快,開銷更少。 在Camel 2.x中,對于Spring XML和Blueprint XML,它們依賴于JAXP和JAXB,它們很重。
因此,我們對Camel 3.1所做的工作是基于Camel DSL的源代碼生成XML解析器。 這意味著我們對DSL所做的任何更改都會重新生成解析器。 解析器僅使用標準Java,因此沒有其他第三方庫依賴項。
為了在Camel中加載XML路由,下面的JAR中現在有2個解析器
– camel-xml-jaxb (基于Camel 2.x的傳統JAXB)
– camel-xml-io (新的快速,輕量級源代碼生成的解析器)
示例駱駝-example-main-xml設置為使用新的解析器。 但是您可以自己嘗試,并通過更改JAR依賴項切換到jaxb解析器。
讓我們看一些數字(請注意,這只是在筆記本電腦上使用2個XML解析器運行此示例的快速測試)。
camel-xml-jaxb:從以下地址加載了1條( 808毫秒 )額外的Camel XML路由:routes / *。xml
camel-xml-io:從以下地址加載了1條( 76毫秒 )額外的Camel XML路由:route / *。xml
因此,新解析器的速度提高了約10倍(76與808毫秒)。
通過對JVM進行性能分析,我們可以看到加載的類也更少了:4734 vs3892。此外,JAXB在JVM中留下了更多的對象和類,這些對象和類可能會很容易被垃圾回收,也可能不會很容易被垃圾回收。在解析過程中使用更多的CPU和內存。
然后在GraalVM上,新的解析器將更快,因為您可以避免在類路徑上使用整個JAXB和JAXP API及其實現,并且避免GraalVM編譯器崩潰和編譯。 在談到GraalVM時,我們正在對即將到來的Camel 3.2進行一些重大改進,這將有助于減小圖像大小和編譯,并允許執行更多的死代碼消除操作,以及使Camel更加出色的功能。 那是另一篇博客文章的另一個主題,請繼續關注。
翻譯自: https://www.javacodegeeks.com/2020/03/apache-camel-3-1-fast-loading-of-xml-routes.html
apache.camel
總結
以上是生活随笔為你收集整理的apache.camel_Apache Camel 3.1 – XML路由的快速加载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八月初三是什么日子 八月初三介绍
- 下一篇: 智库是什么意思 智库的含义