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路由的快速加载相关推荐

  1. Apache Camel 3.1 – XML路由的快速加载

    Camel 3.1中添加的一项功能是能够更快地加载XML路由. 这是我们使Camel变得更小,更快的整体工作的一部分. 您可能会说ewww XML. 但坦率地说,有很多Camel用户使用XML定义路由 ...

  2. 一. spring cloud gateway集成 spring cloud stream binder kafka,实现“动态路由“刷新与加载之采坑记录

    一.前言 Spring Cloud Stream是用于构建消息驱动的微服务应用程序的框架. 本文主要介绍如何集成 Spring Cloud Stream,以 Kafka发布订阅模式(topic),实现 ...

  3. Angular路由--模块预加载

    2019独角兽企业重金招聘Python工程师标准>>> 预加载是介于直接加载.惰加载的一种方式. 预加载的工作原理 在每次成功的导航后,路由器会在自己的配置中查找尚未加载并且可以预加 ...

  4. vue“路由懒加载” 技术,让网页快速加载 (优化篇)

    (含代码示例.截图演示)让中大型vue项目,按需加载文件,让网页快速渲染! 官方文档:路与懒加载 所谓的路由懒加载: 代码示例 · 对比: 1. 没有优化的代码(截图1 · 省略) import Vu ...

  5. 图片在xml文件中直接加载.9文件

    图片在xml文件中直接加载.9文件,可能会因为图片压缩的缘故产生锯齿,如果使用 ImageView imageview = (ImageView) view .findViewById(R.id.in ...

  6. xml使用外部DTD加载验证

    在默认情况下,对于外部的DTD而言,我们的xml文档不会加载引用的外部DTD. 需要让xml文档强制加载外部DTD.换句话说,需要使用外部DTD文件来验证我们的xml文档. 有两种方法来验证: val ...

  7. vue项目实现路由按需加载(路由懒加载)的3种方式

    vue项目实现路由按需加载(路由懒加载)的3种方式 1.vue异步组件 2.es提案的import() 3.webpack的require,ensur *1.vue异步组件技术 ==== 异步加载 v ...

  8. Vue(小码哥王洪元)笔记06路由,url的hash,history,router-linke,路由跳转,动态路由,懒加载,路由嵌套,router参数传递,导航守卫

    1.什么是路由 路由器提供了两种机制:路由和传送 路由:数据报从来源到目的地的路径 传输:将输入端的数据转移到合适的输出端 路由有一个非常重要的概念教路由表 路由表本质上就是一个映射表,决定了数据包的 ...

  9. vue-router 路由的懒加载原理及方式

    当打包构建应用时,JavaScript 包会变得非常大,影响页面加载.如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 结合 Vue 的异步组 ...

最新文章

  1. html需要电脑什么配置,配置一台电脑需要什么 选择配置一台好的台式电脑
  2. iOS开发debug集锦
  3. 「Swift」第三章String and Character
  4. 插件式程序开发及其应用(C#)
  5. windows下直接输入nvidia-smi显示不是内部或外部命令也不是可运行的程序
  6. 李航第六章的BFGS算法
  7. Spring 基于注解(annotation)的配置之@Required注解
  8. linux终端背景透明度设置,Ubuntu Terminal标签背景颜色设置
  9. 有用户访问我的计算机,事件查看器有个奇怪用户账号登录HOME-W81$,我的电脑没有这个用户账号,本机是win8.1ʌ - Microsoft Community...
  10. gem5的安装、编译及运行
  11. bzoj1083 [SCOI2005]繁忙的都市(最小生成树)
  12. python基础3之文件操作、字符编码解码、函数介绍
  13. kaggle房价预测最热解析
  14. 分库分表中间件sharding-jdbc的使用
  15. Flightgear 编译
  16. windows内核开发笔记十一:IRQL级别调用说明
  17. 一步一步SharePoint 2007之一:安装SharePoint
  18. 电脑远程开机pcie卡
  19. 企业信息化互联网转型“生死劫”
  20. 腾讯云运维工程师认证TCA原题(含解析)

热门文章

  1. 约会安排 HDU - 4553
  2. P2567 [SCOI2010]幸运数字
  3. AcWing 1091. 理想的正方形
  4. Loj #149. 01 分数规划(01分数规划模板题)
  5. 第1节 连通性强连通、割点和桥(一)
  6. 牛客网dp专题 数位dp
  7. 花店橱窗布置(洛谷P1854)(动态规划)
  8. codeforces1553 F. Pairwise Modulo(数学)
  9. 【并查集】【最小生成树】【贪心】给水(jzoj 2015)
  10. java多线程之:SynchronousQueue队列