apache.camel_Apache Camel 2.16发布–十大亮点

apache.camel

Apache Camel 2.16于上周五发布。 这篇博客文章是我尝试在此新版本中进行前10名(加1作为奖励)的亮点。 2016年

1.动态到

来自骆驼用户的最常见的常见问题是,如何将消息发送到端点,uri应该使用消息中的动态值(例如标头)。

在此发行版之前,答案将是收件人列表EIP。

但是,为了简化此操作,我们在DSL中引入了动态功能,该功能使用简单语言来动态计算端点uri,并将消息发送到该端点。 对于更高级的用例,答案仍然是收件人列表,因为它可以并行发送到多个端点,并且可以进行聚合等等。

因此,常见问题解答中的示例 :

.to("freemarker://templateHome/${body.templateName}.ftl")

收件人列表的解决方案在哪里:

.recipientList(simple("freemarker://templateHome/${body.templateName}.ftl"))

现在可以使用toD轻松完成:

.toD("freemarker://templateHome/${body.templateName}.ftl")

在XML DSL中,您可以使用:

我们将toD和toD故意分开。 因为前者允许Camel知道它的静态端点进行优化,而后者则是动态的。

在其他一些EIP(例如WireTap)和rest-dsl中也支持dynamic to。

2. Enrich和PollEnrich现在支持动态端点。

由于toD的新动态,它为将其引入到Content Enricher EIP中以实现rich和pollEnrich取得了进展。 多年来,这一直受到大众的需求,但最初计划是作为Camel 3.0的更改。 通过支持URI中的简单语言,这与toD一样。

一个小例子:

from("direct:start").enrich().simple("http:myserver/${header.orderId}/order").to("direct:result");

注意我们如何使用$ {header.orderId}来引用标题。

3.所有包含组件的文档

在此版本中,我们有199个组件(有些是ftp sftp等的变体)。 对于每个选项,您都可以在组件上进行配置,或者使用Javadoc记录了端点。

然后在构建过程中提取该文档,使其在运行时可用,您可以使用Java API,JMX或Camel命令进行访问 。

我们也已经开始为每个选项贴标签(认为是标签/徽章)的过程,以便您可以查看该选项是否适用于消费者,生产者,安全性,高级等。 这是一个持续的过程,但是我们对具有最多选项的组件执行了此操作。

这是我们从Camel 2.12开始就一直努力的延续。 先前的Camel 2.15版本有很多文档, 我已经在其中写过博客 。 使用Camel 2.16,我们现在可以100%覆盖文档,并且在构建过程中启用了验证检查,如果没有文档,则选件将失败。

借助此功能工具(例如hawtio),可以美化UI来显示有关Camel应用程序的信息,如下所示:

hawtio在运行时端点属性中显示了其配置方式。选项分组在选项卡中。

hawtio在运行时端点属性中显示了其配置方式。 选项分组在选项卡中。

4.更深入的JMX统计信息

我们已经对所有EIP进行了大修,以提供有关EIP的更多运行时统计信息。 例如,基于内容的路由器现在允许列出所有谓词,并细分这些谓词中使用最多的谓词。 负载均衡器EIP还会公开统计信息,例如其当前状态,异常触发次数最多等。 这适用于所有各种EIP。 此外,还公开了EIP的配置。

我们还设法使您的自定义Camel组件或Java Bean混入其自定义JMX属性和操作,以及来自Camel的标准属性/操作集。 在此之前,这是不可能的,只有您才能使用。 我以前曾对此写过博客 。

5.传入和传出端点

现在,我们在端点注册表中跟踪所有传入和传出端点。 可从Java,JMX和Camel命令访问注册表。 注册表还跟踪每个端点的使用频率,因此您可以知道哪个端点使用得最多。

我以前曾在博客上对此进行过介绍 ,并录制了一段视频来演示这一点。

6.纯Java中的Swagger 2.0

swagger组件已作为新的camel-swagger-java模块移植到Java,并已升级到swagger 2.0规范。 我们还将camel-swagger-java集成到rest-dsl中,并且能够使用所选的选定HTTP组件。 因此,如果您将jetty与rest-dsl结合使用,则swagger模块可以重用该模块,以通过HTTP公开api文档。 不建议使用基于Scala的旧模块,并且只能使用servlet公开api文档。

我以前在博客上对此进行过记录,并录制了有关此操作的视频。

7. rest-dsl的改进

现在,您可以为其余服务的参数映射,查询参数,路径,正文等配置文档。

您可以从Apache Camel附带的一个小示例中找到更多详细信息。

8.脚本DSL

我们在DSL中引入了专用脚本 ,以允许在路由过程中执行脚本,默认情况下,该脚本不会修改您的消息。 我们发现许多用户想要这样做,但是在使用语言组件和记住设置transform = false时有些痛苦。 使用脚本DSL,它在路由中脱颖而出。

一个运行一些常规脚本的小例子

<route><from uri="file://inbox"/><script><groovy>// some groovy code goes here</groovy></script><beanRef ref="myServiceBean" method="processLine"/></route>

9.启用参数绑定后,骆驼代理更易于使用

如果您使用Camel代理将中间件隐藏在接口后面,则在调用接口上的方法时,现在可以预先执行参数绑定。 我们发现这更直观,并且可以像使用Bean组件一样从消息正文/标题等映射到这些参数。

在Camel proxy上查看更多详细信息。

10.其他一些很棒的新东西

文件使用者现在支持使用幂等的读取锁定模式。 这样可以安全地使群集文件使用方在同一文件上竞争共享文件系统,以确保由选择的幂等存储库(例如使用hazelcast)控制排他的读取锁定。

我们还提供了Maven原型,用于使用spring-boot和cdi创建微服务风格。

聚合器支持预完成模式,该模式允许传入消息完成上一个组并以其自身作为第一条消息来启动新组。

11.更多组件

有12个新组件和3个新数据格式。

  • camel-paho –使用Eclipse Paho客户端进行MQTT消息传递
  • camel-pdf –用于创建PDF文档
  • camel-grape –允许您在CamelContext运行时获取,加载和管理其他jar。
  • camel-slack –允许您连接到Slack的实例,并通过预先建立的Slack传入Webhook传递包含在消息正文中的消息。
  • camel-jolt –用于从JSON到JSON的转换
  • camel-aws-ec2 –为Amazon Web Services EC2提供支持的组件
  • camel-undertow –要将Undertow用作HTTP服务器或客户端。
  • camel-git –通用Git组件
  • camel-sjms – SJMS Batch是用于从JMS队列高效执行事务性批处理消耗的专用组件
  • camel-http-common –一个通用的基本组件,可在我们拥有的所有各种HTTP组件之间重用。
  • camel-swagger-java –一个基于Java的纯Swagger组件。
  • camel-elsql –使用ElSql定义SQL查询的扩展SQL组件
  • camel-jbpm –通过kie-remote-client API将消息发送到jBPM。

例如,有一个通用的git组件,一个用于输出PDF文档的pdf组件,以及一个新的批处理JMS组件,该组件允许对X条JMS消息进行批处理并将它们聚合为单个消息,所有这些都在事务边界之内。

有关此发行版中更改的详细列表,请参见Camel 2.16发行说明 。 与往常一样,当您从较早的Camel版本进行升级时,请务必阅读升级要考虑重要更改部分。

翻译自: https://www.javacodegeeks.com/2015/10/apache-camel-2-16-released-top-10-highlights.html

apache.camel

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336799.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式示例_责任链设计模式示例

设计模式示例本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#x…

edmonds算法matlab,匈牙利算法的matlab实现

匈牙利算法算法简介算法原理算法实现(附代码)测试算法简介下面摘用百度百科中的解释。匈牙利算法(Hungarian method)是由匈牙利数学家Edmonds于1965年提出&#xff0c;因而得名。匈牙利算法是基于Hall定理中充分性证明的思想&#xff0c;它是二分图匹配最常见的算法&#xff0c…

java jooq_将Java EE与jOOQ结合使用的初学者指南

java jooqJava EE附带了自己的持久性API&#xff1a;JPA。 当您想要将RDBMS实体&#xff08;表/关系&#xff09;映射到Java实体&#xff08;类&#xff09;时&#xff0c;JPA最强大&#xff0c;主要遵循1&#xff1a;1映射策略。 其背后的思想是&#xff0c;业务逻辑通常不像关…

php扩展 waf,基于PHP扩展的WAF实现

访问一下看看结果&#xff1a;可以看到ls命令成功的执行了&#xff0c;也就是说我们的正常文件是不会被拦截的&#xff0c;而只有upload目录中的文件会被拦截&#xff0c;这样做又会引发另一个弊端&#xff0c;倘若攻击者通过某种方法将shell写入正常的文件中&#xff0c;或是与…

junit4 集成测试_使用JUnit规则进行干净的集成测试

junit4 集成测试JUnit Rules的优势&#xff0c;尤其是在进行集成测试时&#xff0c;几乎不能被高估。 在本文中&#xff0c;我们将阐明ExternalResource扩展的有用性。 在我们必须使用抽象外部资源的第三方库的情况下&#xff0c;这简化了灯具控制。 作为示例&#xff0c;我们将…

多项式在matlab中的应用,matlab的应用-多项式函数及多项式拟合

matlab的应用-多项式函数及多项式拟合 Matlab 的应用- 多项式函数及多项式拟合 本节将向大家简要介绍 matlab 在多项式处理方面的应用。 多项式函数主要有&#xff1a; roots 求多项式的根 poly 特征多项式 polyval 多 项式的计算 poly2str(p, x )多项式代换 polyfit 多项式曲线…

乐惠科技php面试题,程序员中的奇葩,使用php构建魔兽世界

这是用PHP编写的魔兽世界服务器。现在它已经调试了登录服务器的过程。目前的魔兽世界客户端是2.4.3_8606。服务器列表和帐户密码数据需要查询AUTH库。世界服务器身份验证过程已完成&#xff0c;数据包加密已完成后续进程正在开发中......数据库文件在根目录: sql/sql.7z今天在群…

javafx窗体程序_JavaFX真实世界应用程序:EIZO CuratOR Caliop

javafx窗体程序JavaFX Real-World应用程序第四号称为Caliop 。 它是EIZO为医院手术室开发的CuratOR解决方案的前端。 前端在壁挂式控制台上运行&#xff0c;并允许操作团队查找有关患者的信息&#xff0c;控制各种视频源到不同显示器的路由&#xff0c;录制视频&#xff0c;拍摄…

java8 streams_Java 8 Streams:过滤和谓词否定

java8 streams最近&#xff0c;有关LJC 邮件列表的成员在流中.filter方法中使用谓词否定的有趣讨论&#xff0c;因此我认为值得在博客文章中进行总结。 讨论是关于使用.filter和否定谓词的方法。 这篇文章的代码可以在我的github帐户中找到 。 也许这就是您可能会想到的方式&…

hystrix熔断 简介_Hystrix简介– Hello World

hystrix熔断 简介在以前的博客文章中&#xff0c;我介绍了需要像Netflix Hystrix这样的库的动机。 在这里&#xff0c;我将跳入一些非常基本的方法来开始使用Hystrix&#xff0c;并在更复杂的用例中进行跟进。 你好&#xff0c;世界 以下是“ Hystrix命令”的一个简单的Hello …

php中哪个函数用于读取文件,PHP内置函数fget读取文件

php fgets()函数从文件指针读取一行语法:fgets(file,length)参数说明必需的. 指定姚要读取的文件长度可选. 指定姚都区的字节数. 默认值为102字节从文件所指向的文件中读取一行&#xff0c;并返回最大长度为1个字节的字符串. 遇到换行符(包含在返回值中&#xff0c;)&#xff0…

c++返回指针时候注意提防_提防Java中的函数式编程!

c返回指针时候注意提防这对函数式编程并不会造成太大的影响&#xff0c;这真棒。 这是关于某些实践的警告&#xff0c;您很可能会将其应用于您的代码&#xff0c;而这是完全错误的&#xff01; 。 高阶函数对于函数式编程是必不可少的&#xff0c;因此&#xff0c;谈论它们将帮…

centos php支持yaf,CentOS环境下给PHP7.0安装yaf扩展

|CentOS环境下给PHP7.0安装yaf扩展在CentOS环境下给PHP7.0安装yaf扩展&#xff0c;首先要知道PHP的安装目录在哪里&#xff0c;以我当前的路径为例&#xff0c;在/usr/local/php目录下。下一步需要下载扩展包&#xff0c;进入http://pecl.php.net/package/yaf寻找符合版本要求的…

jsf教程_JSF范围教程– JSF / CDI会话范围

jsf教程会话作用域跨越多个HTTP请求-响应周期&#xff08;理论上是无限的&#xff09;。 当您需要每个HTTP请求-响应周期进行一次交互时&#xff0c;请求作用域在任何Web应用程序中都非常有用。 但是&#xff0c;当您需要对属于用户会话的任何HTTP请求-响应周期可见的对象时&…

linux查询设备文件信息失败怎么办,Linux下使用blkid命令查询设备及文件系统信息的方法...

在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。blkid主要用来对系统的块设备(包括交换分区)所使用的文件系统类型、LABEL、UUID等信息进行查询。要使用这个命令必须安装e2fsprogs软件包。直接使用blkid可列出当前系统中所以已挂载文件系统的类型。默认情…

linux rpm mysql mysql_config,Linux CentOS6 mysql rpm安装

选择操作系统及版本&#xff1a;点击5.6版本链接将下载好的文件上传至服务器下面开始安装&#xff1a;检查是是否有mysql的包# rpm -qa | grep -i mysql删除原有包# yum -y remove mysql-libs*开始安装下载好的三个文件&#xff1a;# rpm -ivh MySQL-server-5.6.38-1.el6.x86_6…

java 可视化_可视化Java 9模块关系

java 可视化正如我在之前的文章中所述 &#xff0c;我已经在Java 9 Jigsaw构建上运行Eclipse Neon了一段时间&#xff0c;并且没有任何问题。 我在周末花了几个小时来修改一些模块化工具的想法。 我为Eclipse Neon写了一个小插件&#xff0c;可视化了各个模块之间的连接。 现…

zybo的linux开发教程,Zybo全栈开发入门教程——连载三:创建Linux设备驱动和应用程序...

作者&#xff1a;Commanderfranz&#xff0c;编译&#xff1a; kenshin通过前面两篇文章我们不仅创建的自定义IP模块还移植了Linux操作系统&#xff0c;今天这篇文章的内容是将这两部分联系起来&#xff0c;其实我们创建的myLed IP相对于Linux操作系统可以是它的一个底层设备&a…

linux 二进制差分工具,打造Android万能的软件更新库

今日科技快讯阿里星球今天在苹果商店发布的更新动态显示&#xff0c;其将在近期停止APP内的音乐服务&#xff0c;用户可以通过新版本内的指引和说明&#xff0c;导出本地音乐。这意味着上线八个月后&#xff0c;阿里星球做出了一个重大决定&#xff1a;停止音乐服务后&#xff…

lambda 分类聚合_使用Java 8 Lambda,流和聚合

lambda 分类聚合总览 在本文中&#xff0c;我们将介绍使用Java 8 lambda&#xff0c;流和聚合来过滤和处理Collection中的对象。 这篇文章中的所有代码都可以在此处的 BitBucket中找到 。 对于此示例&#xff0c;我们将创建许多对象&#xff0c;这些对象代表我们IT基础架构中的…