在Apache Camel项目中,我们正在努力开发下一个即将发布的下一个Apache Camel 3.2.0版本。
我们在Camel 3中努力研究的问题之一就是使其变得更小,更快。 其中一个方面是配置管理。 您可以按照12要素原则以多种方式完全配置Camel,以使配置与应用程序分离。 一种流行的配置方式是使用属性文件(例如application.properties),或者在Kubernetes中,您也可以从配置映射或环境变量进行配置。
因此,我们逐渐超过了Camel 3.0、3.1和现在的3.2,从而使配置更快。 通过最新的工作,我们现在完全可以自由思考。
![](https://i-blog.csdnimg.cn/blog_migrate/8dd7f9d82873d93abe55aba36182bd91.png)
当使用基于反射的配置时,Camel能够报告。 可以配置:
#bean自省以记录基于反射的配置
camel.main.beanIntrospectionExtendedStatistics = true camel.main.beanIntrospectionLoggingLevel = INFO
我们已经准备好骆驼示例主要维护报告。 骆驼3.0、3.1和3.2的数字如下:
骆驼3.0:调用BeanIntrospection:12次
Camel 3.1:停止被调用的BeanIntrospection:11次 骆驼3.2:停止被调用的BeanIntrospection:0次
这意味着您可以在声明性属性文件等中完全配置所有Camel端点,组件,路由,EIP,数据格式,语言,骆驼主体,骆驼上下文等,然后在运行时全部调用所有这些实例上的实际setter方法(即,仅直接java方法调用,没有java.lang.reflect)。
这是可能的,因为我们的源代码根据存在的选项生成配置器类。 这些配置程序类是无反射的。 可能有很多选项,因此无法手动实现,例如,参见kafka端点配置器 。
Camel 3.2中的另一个功能是,在不包括嵌套配置选项之前,我们使所有组件选项都可用于配置。 而且,如果您不喜欢在属性文件中进行配置,那么我们还有类型安全的component-dsl和endpoint-dsl 。
翻译自: https://www.javacodegeeks.com/2020/03/apache-camel-3-2-reflection-free-configuration-of-camel.html