Apache提供的消息路由引擎,骆驼!
题图:from Zoommy
Camel是什么
核心是路由引擎,更精确地说就是路由引擎构造器。camel提供了统一的高级抽象api,开发者无需考虑消息来源或者消息目的地,甚至连协议都无需考虑,所有的这些都通过相同的api处理。
另外值得一提,Camel不是什么。他不是ESB(点击送你去度娘)
Camel的历史
Camel最初是在Apache ActiveMQ项目下的子项目,其功能就是做队列间的消息转发。随着其功能的不断完善,Camel被提升为Apache顶级项目。也因此,作为路由规则引擎被广泛使用。
这个项目被命名为Camel的原因有很多种;有说是因为开发成员喜欢Camel香烟的,有说是因为骆驼可以不吃不喝跋山涉水且负重颇高的,还有说是因为骆驼不会对它喜欢的人吐口水的。
Whatever,想象一下,Camel对你吐口水的那场景,:)。
Camel的功能和特性
路由和规则引擎
Camel的主要功能就是路由引擎,说白了就是消息分发。
EIPs (点击送你去豆瓣)
ENTERPRISE INTEGRATION PATTERNS ,企业集成模式;是指为了解决系统间集成问题提出的多种模式,Camel几乎实现了所有的EIPs,并且有DSL与之对应;因此Camel是EIPs的实现者。
pojo模型
Beans是Camel世界的一等公民,Camel倾向于用户使用Beans,带来的好处之一就是用户可以继承Camel内建的功能并自定义。
DSL、容易配置
Camel有自己的领域语言,语法简洁,支持Java、XML、Scala、Groovy。可以方便的配置一个路由。
内容格式无关、自动类型转换
Camel没有规定消息格式,几乎可以以任意一种格式传递消息。能实现这样的工能,就是因为Camel内置了很多类型转换器,并且可以自动转换。
可扩展组件库、模块化与插件化架构
Camel的架构设计就采用了模块化和组件化的思想,因此添加第三方扩展组件以及自定义组件都很容易,此外Camel的组件库也很丰富。
轻量级内核
1.6MB的内核,应该可以算轻量级吧。
Camel小示例
- 简单的队列消息转发
|
|
- 监听目录,如果有文件删除就复制一份到目标目录
|
|
消息路由的意义
说了这么多,我们现在看到的功能无非就是消息的转发,有什么用呢,看起来很鸡肋啊。
其实不然,有了消息路由这个中间站,我们可以对消息自定义处理:
分布式环境下的去重
对消息进行包装
分发到多个目的地
等等…消息在手,想怎么玩就怎么玩。
下一篇我们就来详细的说说Camel的原理。