Camel-第3章 入门

企业集成模式(EIP)

“模式”这类书籍的目的不是提倡作者发明的新技术,而是记录特定领域内现有的最佳实践。借此,作者希望传播最佳实践的知识并形成架构设计模式的术语。

其中最出名的模式书籍是《设计模式:可复用面向对象软件的基础》,本书由Erich Gamma, Richard Helm, Ralph Johnson 和John Vlissides四人帮其同完成。自从设计模式出版以来,非常多各种模式的书籍出版,质量参差不齐。其中一本非常出名由Gregor Hohpe和Bobby Woolf《企业集成模式.设计、构建及部署消息传递解决方案》的书。大家通常叫这本书EIP。作为EIP的副标题,该书着重介绍异步消息传递系统的设计模式。这本书讨论65种模式。每个模式都有一个名称,大多数也给出了一个
图形符号,意在在架构图中使用。

Camel项目

Camel(http://camle.apache.org)是一个基于Java的开源项目,实现了许多EIP书中的设计模式。因此如果使用Camel,有一本EIP来作参考是一个好主意。

Camel在线文档

在Camle官网的右侧的文档分类菜单中有相关的文档(包含PDF格式)。Camel相关的书也列出来了,尤其是Camel实践(这本书有一个免费的章节)强烈推荐阅读,以便更好的熟悉Camel。

提示

可以通过面包屑进行导航。

在线JavaDoc

Apache Camel提供了Javadoc文档。核心API一个文档,每个组件是都有独立的文档。

Camel的基本概念和术语

在这一章节会解释一些Camel的概念和术语。本节不是一个完整的Camel教程,只是第一步。

端点

端点在进程间通讯时经常被提到。比如,在客户端/服务器通讯中,客户端就是一个端点,服务器就是另一个端点。w依赖于上下文,端点可能包含一个地址,比如基于TCP通讯的主机和端口号,或者是一个软件入口地址。例如:“www.example.com:80”就是一个端点,他可以指向一个真实的主机名(这是个地址),或者指向一个Web服务器(这是一个软件连接地址)。通常,地址和软件连接地址之间的区别并不重要。
一些中间件技术可以将多个软件入口连接到一个相同的物理地址上。比如:CORBA是一个面向对象和远程处理(RPC)中间件标准。CORBA服务进程包含了多个对象,客户端使用同一个物理地址(主机名:端口)和这些对象通讯。但客户端和一个指定的对象通讯时,就需要使用对象的逻辑地址(在CORBA中就叫IOR),这个地址包含了物理地址(主机名:端口)和一个进程内对象的唯一标识。(IOR还包含一些其他信息,但不影响这里的讨论。)当讨论CORBA的时候,有人喜欢用端点来指CORBA服务器的物理地址,而另一些人用它来指CORBA对象的物理地址,其他一些人可以用这它来指定下面的内容:

  • CORBA服务进程的物理地址
  • CORBA对象的逻辑地址
  • CORBA服务进程(重量软件入口)
  • CORBA对象(轻量软件入口)
    正因为这样,你可以看到术语“端点”最少两个方面是有歧义的。第一,它可以是一个地址,或者是软件入口的连接点。第二,重量与轻量软件入口或者物理地址与逻辑地址。理解不同的人对术语“端点”的不同解释是非常有必要的,因为在Camel中使用的术语“端点”可能与你之前对这个术语的理解是不同的。
    Camel为许多不同的通信技术实现的端点提供了开箱即用的支持。下面是一些Camle支持的端点:
  • JMS消息队列
  • web service
  • 文件。文件听起来不像是一个端点,除非你意识到,你可以在一引起系统中,一个应用将消息写入一个文件,之后另一个应用从这个文件中读消息。
  • FTP服务器
  • email地址。客户端可以往邮件地址发消息,服务端可以从邮件服务器读消息。
  • POJO(普通Java对象)
    在基于Camel的应用中,你可以通过routes(会在4.8章节“路由,路由构造器和Java DSL”中讨论)来创建和连接这些端点。Camel定义了一个“EndPoint”接口。Camel支持的端点都需要实现“EndPoint”接口。就如我在3.3章节中说的一样。