阿帕奇骆驼2.18版:包括什么


本周,Apache Camel 2.18.0被释放了。这是一个重要的版本,我将在这篇文章中重点介绍。

Java 8

Camel 2.18是第一个需要Java 1.8的版本(很容易记住Camel 2.18 = Java 1.8,Camel 2.17 = Java 1.7)。我们采取了一种谨慎的方法,并保持骆驼应用编程接口向后兼容。作为最终用户,您可以使用现有的Camel应用程序源代码,并用Java 1.8和Camel 2.18重新编译它们,您应该一切都很好。

在骆驼的内部源代码中,我们已经开始使用Java 8 APIs来实现新的功能。现有的功能仍然使用Java 7 APIs,所以我们可以很容易地将错误修复移植到旧版本。

我们还在Java RouteBuilder中引入了一些Java 8 lambda和函数式API,您可以在谓词和消息转换中使用它们。您可以查看little example在GitHub。

弹簧靴启动器

从Camel 2.15开始,我们就支持Spring Boot,但是在这个版本中,我们已经整理了所有Camel组件,使它们像第一类Spring Boot一样工作starter components。这意味着您应该使用-starter作为您的依赖项,比如camel-kafka-starter。

弹簧启动自动配置

所有的Camel组件现在都生成Spring Boot自动配置源代码,这意味着您可以配置组件、数据格式、语言等。,使用弹簧启动配置(即,在应用程序属性文件中)。除此之外,还有诸如IDEA、Eclipse等工具。,它支持Spring Boot,在编辑应用程序属性文件时会有代码完成。

尼古拉费拉罗,谁帮助实现了这一点,张贴了blog entry更多细节。

弹簧靴健康检查

如果您使用的是执行器,Apache Camel将健康检查与弹簧靴集成在一起。健康检查会进行粗粒度检查,以确保Camel启动正常。我们计划在Camel中实现更深层次的健康检查应用编程接口,以允许单个组件参与检查。例如检查组件是否可以连接到远程系统等等。

野花成群的骆驼

WildFly Swarm该项目对阿帕奇骆驼也有很大的支持。然而,这种发展发生在Wildfly-camel项目。野花-骆驼发布了版本4.3.0,支持骆驼2.18.0。

自动文档

我之前在博客上写道,我们正在努力从源代码中保留和生成骆驼文档。这意味着每个骆驼组件、EIP、语言、数据格式等。,它们的选项都记录在源代码中,然后我们在构建过程中提取这些代码,以保持附带的文档是最新的。我们已经将几乎所有的文档从旧的维基系统迁移到了。adoc文件的源代码。我们将继续这项工作,以完成这为下一个版本,并将致力于建立一个新的网站。

作为一名骆驼开发人员,你可能认为这没什么大不了的,但事实确实如此。这确保了所有选项在文档中都是100%最新的。它还允许工具在设计和运行时访问这些信息。Hawtio可以在运行时显示所有端点的深层信息,并包括每个选项的文档,如下所示:

我们还有一个Maven plugin它可以扫描您的所有源代码,并报告配置骆驼端点无效。该插件当前位于fabric8,在这里我们可以更快地促进创新。然而,当插件成熟时,我们计划将源代码捐赠给Apache Camel项目,以便开箱即用。

XML XSD完全文档化

春天和蓝图的XML XSD现在还包括您可以在外部路由上进行的配置的文档,例如在其他全局配置上。

FluentProducerTemplate

其中一个较小但非常可爱的新增功能是FluentProducerTemplate,它使用一个流畅风格的应用编程接口作为客户端应用编程接口,用于向骆驼端点发送消息。您可以通过以下方式很好地做到这一点:

template()
   .withBody("Hello World")
   .withHeader("foo", 123)
   .withHeader("bar", 456)
   .to("jms:queue:beer")
   .send();

休息制作人

REST组件现在允许调用Rest服务(作为一个客户端),在这里您可以为HTTP传输选择以下Camel组件之一:HTTP、http4、net 4-HTTP、Jetty、Restlet和now。您也可以参考现有的swagger API文档,并将camel-swag-Java包含在类路径中,以便自动验证REST端点是否配置为使用有效的REST操作和参数。

使用磁滞回线的断路器

我们添加了对使用网飞的本地支持Hystrix就像你骆驼路线上的电路中断。有一个example included

下面是another example举一个例子,Spring Boot调用了一个运行在Kubernetes集群(或本地集群)上的WildFly Swarm上的服务,我最近一直在讨论这个问题。

    public void configure() throws Exception {
        from("timer:foo?period=2000")
            .hystrix()
                .to("netty4-http:http://{{service:helloswarm}}/say")
            .onFallback()
                .setBody().constant("Nobody want to talk to me")
            .end()
                .log("${body}");
    }

Zipkin消息跟踪

该版本还包括骆驼zipkin,它允许使用Zipkin进行分布式消息跟踪。您可以通过provided example

ServiceCall

Service Call EIP允许我们从可插拔服务注册中心调用带有服务发现的远程服务。例如,您可以使用ETDC、领事、丝带、库本内特和其他。

新组件

像往常一样,每个版本都有许多新组件:

  • 骆驼星号用于与星号交换机服务器交互。

  • 骆驼-厘米-短信发送短信使用短信网关。

  • 骆驼-领事整合您的申请与领事。

  • 骆驼-高速缓存-用于与高速缓存3高速缓存交互。

  • 骆驼弗林克桥骆驼连接器与阿帕奇弗林克任务。

  • 骆驼伐木工,用于通过伐木工协议接收木材(例如,由Filebeat使用)。

  • 骆驼丝带使用网飞丝带与服务呼叫EIP。

  • Camel-servicenow通过服务now实现云管理。

  • 骆驼电报用于电报通讯。

  • 骆驼拉链用于跟踪骆驼信息流和使用拉链计时

  • 骆驼编年史,用于与OpenHFT的编年史引擎交互。

新数据格式

我们还有一种新的数据格式:

Camel-johnzon - Apache Johnzon是JSR-353的一个实现。

升级时的重要信息

Spring的旧版本,如3.x和4.0.x已经被删除。在ServiceMix或Karaf上的OSGi用户也应该使用Karaf 4.x。它可能适用于一些旧的Karaf版本,但它没有得到官方支持。

下一个版本肯定会放弃对旧版本的支持。OSGi用户应安装骆驼弹簧模块,因为弹簧模块已从骆驼弹簧中移除。现在需要弹簧靴1.4.x。

您可以在中找到更多详细信息Camel release notes

下一步是什么

我们将开发一个Camel 2.19版本,在这个版本中,我们可以进一步改进Camel 2.18版本给我们带来的Java 8的新路径。我们还想完成文档的迁移,并在一个新的网站上工作。希望我们也能得到一个好的标志。

接下来是骆驼2.19,我们将开始学习骆驼3.x。但这将首先在骆驼社区中讨论。然而,在今年剩下的时间里,我们将重点关注骆驼2.19,它计划于2017年Q1奥运会开始。