`
jnn
  • 浏览: 287664 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Camel中的几个重要概念之 Endpoint

    博客分类:
  • ESB
阅读更多

前段时间和一些朋友聊过Apache Camel , 他们都反映一个问题就是有关Camel构架的介绍文档很少。其实在Camel发行包中所带的文档Camel Manual 就有一段对Camel内部设计有一个比较好的介绍。我在这里把其中大部分的内容 翻译成了中文,希望能对大家了解Camel有所帮助。

Endpoint
Endpoint这个词以前经常被用来描述进程间通信。例如,在客户端与服务器之间的通讯,客户端是一个Endpoint和服务器是另外一个Endpoint。根据不同的情况下,一个Endpoint可能指的地址,如一个TCP通信的(主机:端口)对,也可能是指与这个地址相对应的一个软件实体。例如,如果大家使用“ www.example.com:80 ”来描述一个Endpoint。这些Endpoint可能是指实际的端口上的主机名称(即地址) ,也可能是指与地址相关的的网页服务器(即在这个地址之上运行的软件地址) 。通常情况下,这种地址和在这个地址之上运行的软件之前的区别并不是一个重要问题。

一些中间件技术可以使一些软件实体的绑定在相同的物理地址上。例如, CORBA是一种面向对象的远程过程调用( RPC )的中间件标准。如果一个CORBA的服务器进程包含几个对象,客户端可以与这些在同一物理地址(主机:端口)之上的任意对象进行通讯 ,但当客户端想与特定对象进行通讯是, 需要指定这个对象的逻辑地址(在CORBA中称为IOR)。 IOR是由物理地址(主机:端口) ,以及一个唯一识别的对象在其服务器进程标识所组成。 (IOR还包含了与此本次讨论无关其他一些额外的信息。)当谈论CORBA的时候,有些人可能会使用“endpoint”来描述CORBA的服务器的物理地址,而其他人可能使用Endpoint来描述一个CORBA对象的逻辑地址,和其他人可能会使用这个词来描述下面这些:

    * CORBA的服务器进程的物理地址(主机:端口)
    * CORBA对象的逻辑地址(主机:端口加上编号)
    * CORBA的服务器进程(相对重量级的软件实体)
    * 一个基于CORBA对象(一个轻量级的软件实体)


正因为如此,你可以看到Endpoint这个词至少在两方面是模糊的。首先,它可能是指一个地址或联络软件实体在该地址。其次,粒度上可能是模糊的:一个重量级与轻量级的软件实体,或物理地址与逻辑地址。了解了Endpoint这个名词在不同场景下的不同描述可以帮助我们更好地理解为什么Camel中的Endpoint。

Camel中的Endpoint支持许多不同的通信技术。以下是Camel所支持Endpoint。

    * 一个JMS队列。
    * 一个Web服务。
    * 一个文件。文件可能听起来不是一个典型的Endoint端点。但是你可以这么想,一些应用系统会把信息写到一个文件中,然后另一个应用程序可能读取该文件获得这一信息。
    * 一个FTP服务器。
    * 一个电子邮件地址。客户可以发送邮件到电子邮件地址,和一台服务器可以读取的这个从邮件服务器传入的邮件。
    * 一个POJO (普通旧Java对象)。

分享到:
评论
9 楼 jnn 2009-02-05  
boyingking 写道
jnn 写道
boyingking 写道
又见Jnn,哪天出来聚聚,跟你学习学习^_^

Ah, 在这碰到你了。

还有就是我现在参加了每个月一次 coding-for-fun活动, 有机会我们可以在那现场hacking一把


好啊,年前那次活动本来想去的,结果没抽出时间来。下次一定去


哈, 那就下次活动的时候见了。
我可以给大家介绍一下正在开发的Camel 2.0 有啥新东西
8 楼 boyingking 2009-02-05  
jnn 写道
boyingking 写道
又见Jnn,哪天出来聚聚,跟你学习学习^_^

Ah, 在这碰到你了。

还有就是我现在参加了每个月一次 coding-for-fun活动, 有机会我们可以在那现场hacking一把


好啊,年前那次活动本来想去的,结果没抽出时间来。下次一定去
7 楼 jnn 2009-02-04  
boyingking 写道
又见Jnn,哪天出来聚聚,跟你学习学习^_^

Ah, 在这碰到你了。

还有就是我现在参加了每个月一次 coding-for-fun活动, 有机会我们可以在那现场hacking一把
6 楼 boyingking 2009-02-04  
又见Jnn,哪天出来聚聚,跟你学习学习^_^
5 楼 jnn 2009-02-02  
在Camel wiki
中有一个很好的文章Hiding Middleware, 其中道出了Camel的主要工作就是封装不同的中间件, 让用户使用更高层的 EIP 来完成你的应用集成工作。

When writing software these days, its important to try and decouple as much middleware code from your business logic as possible.

This provides a number of benefits...

    * you can choose the right middleware solution for your deployment and switch at any time
    * you don't have to spend a large amount of time learning the specifics of any particular technology, whether its JMS or JavaSpace or Hibernate or JPA or iBatis whatever

For example if you want to implement some kind of message passing, remoting, reliable load balancing or asynchronous processing in your application we recommend you use Camel annotations to bind your services and business logic to Camel Components which means you can then easily switch between things like

    * in JVM messaging with SEDA
    * using JMS via ActiveMQ or other JMS providers for reliable load balancing, grid or publish and subscribe
    * for low volume, but easier administration since you're probably already using a database you could use
          o Hibernate or JPA to use an entity bean / table as a queue
          o iBatis to work with SQL
          o JDBC for raw SQL access
4 楼 江南白衣 2009-02-01  
这几个概念翻译得好,其实所有的ESB差不多都这几个概念.
3 楼 dishhy 2009-02-01  
呵呵,听起来似乎很不错,但是还没有从事过这方面的应用,有时间的话研究研究
2 楼 jnn 2009-01-24  
whaosoft 写道
这个东西主要是做什么应用用到呀



Apache Camel 是一个非常强大的基于规则的路由以及媒介引擎,该引擎提供了一个基于POJO的 企业应用模式(Enterprise Integration Patterns)的实现,你可以采用其异常强大且十分易用的API (可以说是一种Java的领域定义语言 Domain Specific Language)来配置其路由或者中介的规则。 通过这种领域定义语言,你可以在你的IDE中用简单的Java Code就可以写出一个类型安全并具有一定智能的规则描述文件。这与那种复杂的XML配置相比极大简化了规则定义开发。 当然Apache Camel也提供了一个对Spring 配置文件的支持。

Apache Camel 采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互,其中包含的模块有 HTTP, ActiveMQ, JMS, JBI, MINA or CXF API。 这些模块是采用可插拔的方式进行工作的。Apache Camel的核心十分小巧你可以很容易地将其集成在各种Java应用中。

简单来说, 你有一个JMS的应用, 同时有个基于FTP的应用,你现在想把这两个应用连接起来,就是让这两个应用之间能相互传递消息,那用Camel很容易就能帮你实现这个功能

你可以用Java DSL来定义一个路由规则

 from("jms://queue:inMessage").to("ftp://YourFTPServer");



并把Camel Context通过加载这个路由规则并启动之后,所有发往queue:inMessage 这个队列中的消息都会转发到你的FtpServer上,而用户需要做的只是定义这个路由转发规则。

Camel中的Endpoint屏蔽不同的通讯协议,让用户能够直接把精力放在消息路由的业务逻辑中来,这样可以大大提高企业应用集成的开发效率。

1 楼 whaosoft 2009-01-23  
这个东西主要是做什么应用用到呀

相关推荐

    Apache Camel中文开发使用指南.zip

    这个"Apache Camel 开发使用指南中文版"压缩包文件很可能是为初学者和有经验的开发者准备的一份详细教程,帮助他们理解和掌握Apache Camel的核心概念和实际应用。 在学习Apache Camel时,首先要理解的是它的核心...

    Camel in action(camel实战)

    - 路由是 Camel 的核心功能之一,它允许开发者定义消息应该如何在不同的端点之间流动。这包括简单的单向路由、复杂的分发路由等。 **3. 数据转换** - Camel 提供了丰富的工具来转换消息的数据格式。无论是简单的...

    Camel服务集成,服务编排操作文档

    Apache Camel 是一个强大的开源框架,专门用于构建企业级应用程序中的集成解决方案。它提供了一种声明式的方式来进行服务集成和服务编排,使得开发者可以方便地连接不同的系统、协议和API,从而构建复杂的数据流。在...

    camel 手册

    - **基本概念介绍**:解释了 Camel 中的核心概念,例如 Exchange、Message、Route、Endpoint 等。 - **示例代码分析**:提供了实际的示例代码,展示了如何使用 Camel 进行消息处理和路由配置。 #### 四、架构设计 ...

    Camel_应用开发文档.pdf

    * 微服务架构:Camel 能够帮助构建微服务架构,例如将多个微服务集成到一个系统中。 * IoT 应用:Camel 能够帮助构建 IoT 应用,例如将 sensor 数据从一个系统传输到另一个系统。 7. Camel 依赖 Camel 依赖是指在...

    camel in action 中文版 第一章

    Camel 的基本原则之一是不会假设任何你需要处理的数据,这是很重要的一点,因为它给你们开发者一个集成任何系统的一个机会,不需要转换你的数据为另外的一种公认格式。 1.2 Camel 的主要特点 Camel 提供了高水平的...

    ApacheCamel-JDBC

    在"Apache Camel-JDBC"这个主题中,我们可以深入探讨以下几个关键知识点: 1. **Apache Camel 概述**: Apache Camel 提供了一个丰富的组件库,涵盖了各种协议和数据格式,如HTTP、FTP、JMS、MQTT、XML和JSON等。...

    camel文档

    - **简介**:介绍Apache Camel的基础概念及其在企业级应用中的价值。 - **核心特性**:阐述Camel的主要功能和优势,包括其支持的各种协议、数据转换能力、错误处理机制等。 - **入门示例**:通过一个简单的示例来...

    [Camel实战].(Camel.in.Action).Claus.Ibsen&Jonathan;.Anstey.文字版

    ### Apache Camel 实战知识点概述 #### 一、Apache Camel 简介 - **定义**:Apache Camel 是一个强大的开源框架...书中不仅提供了丰富的理论知识,还有大量的实践案例和代码示例,是学习Camel不可或缺的经典教材之一。

    GSM0978 Camel协议文档

    Leg ID是Camel协议中的一个重要概念,用于标识一次呼叫过程中涉及的不同通信链路或“腿”。这部分内容详细介绍了Leg ID的定义、分配原则及其在呼叫处理过程中的具体应用,这对于理解和实现复杂的呼叫转移和路由功能...

    Camel in Action

    - **路线(Route)**:Camel中的路线是一种定义消息如何流动的配置模型,它包含了多个处理步骤。 - **端点(Endpoint)**:端点是Camel中用于与其他系统交互的接口,可以是文件系统、数据库、HTTP服务等。 - **处理器...

    camel-manual-2.4.0, 用户手册

    - **应用场景**:展示了每个模式的实际应用场景以及如何在 Apache Camel 中实现它们。 - **最佳实践**:分享了在实际项目中应用这些模式的最佳实践。 #### 六、烹饪书 这部分包含了一系列实用的例子,旨在帮助...

    Camel_Camel3Camel6函数_

    在MATLAB编程环境中,"Camel3Camel6函数"是指用于特定数学计算或数据分析的一系列函数。这些函数可能涉及到曲线拟合、数值优化、数据处理等应用,尤其是在处理涉及非线性问题时,比如模拟生物体的驼峰形状、物理学中...

    Camel实战中文版第四章.pdf

    这一章节对于理解和掌握Camel如何与现有Java系统集成非常重要。 #### 二、ServiceActivator企业设计模式的理解 **ServiceActivator** 是一种常用的企业集成设计模式,其核心思想是在消息传递过程中通过调用业务逻辑...

    apache camel 集成组件 教程

    《Camel in Action》是一本由 Claus Ibsen 和 Jonathan Anstey 共同撰写的书籍,这本书是学习 Apache Camel 的重要参考资料之一。书中涵盖了以下内容: - **基础知识介绍:** 第一部分“First Steps”通过两个章节...

    Camel in action PDF和源代码

    这些代码通常按照章节组织,每个章节的代码对应于该章讨论的主题,这样读者可以在实践中学习Camel的各种特性。 学习Apache Camel能够提升开发者在企业级集成项目中的能力,因为Camel的设计理念是重用和组合现有技术...

    Apache Camel 源码分析.rar

    Apache Camel 是一个强大的开源企业集成库,它提供了一种声明式的方式来定义路由和转换数据,使得构建复杂的分布式系统变得更加简单。Camel 使用一种名为“DSL”(Domain Specific Language)的语法规则,允许开发者...

    ApacheCamel-Timer

    Timer 组件是 Apache Camel 中的一个重要部分,它提供了定时触发事件的功能,类似于 Java 中的 javax.swing.Timer 或者 Quartz Scheduler。 在 Apache Camel 中,Timer 组件主要用于创建周期性的事件源,这些事件...

    Camel in action 2nd edition.pdf

    通过这本书,读者不仅可以了解Camel的基本概念和操作,还能学习到如何在实际项目中有效地应用Camel,解决企业集成中的各种挑战。虽然阅读英文书籍可能对某些读者来说有一定难度,但书中清晰的表述和实例演示将有助于...

    camel in action@

    Apache Camel是一个流行的开源Java库,它提供了强大的路由和消息转换功能,使得在分布式系统中处理数据和实现组件间的通信变得更加简单。 本书深入浅出地介绍了Camel的核心概念,包括路由规则(DSL)、组件、数据...

Global site tag (gtag.js) - Google Analytics