`
linda_fxx
  • 浏览: 15776 次
  • 性别: Icon_minigender_2
最近访客 更多访客>>
社区版块
存档分类
最新评论

The several basic concept of Camel

阅读更多
CamelContext
CamelContext是对Camel 运行时的一个抽象, 一般来说一个应用里面会有一个CamelContext 对象,具体执行步骤如下:
  1. 创建一个CamelContext对象。 ---  CamelContext camelContext=new DefaultCamelContext();
  2. 向CamelContext对象中添加Endpoints或者是Components
      ---- camelContext.addEndpoint(uri, endpoint);
      ----camelContext.addComponent(componentName, component); 
  3. 向CamelContext对象中添加路由(routes)规则
     ---- RouteBuilder builder = new RouteBuilder() ;
     ----camelContext.addRoutes(builder);
   4. 调用CamelContext的start() 方法,这样可以启动Camel内部有关消息发送,接收,处理所使用的线程。
     ----camelContext.start();
   5. 当调用CamelContext的stop() 方法时,Camel 会将妥善关闭所有endpoint和Camel内部的线程。注意在调用CamelContext.start() 方法时并不一定阻塞, 而是在启动完每个Comonent和Endpoint的内部线程后start() 方法返回。而CamelContext.stop()方法会等待所有Endpoint和Component的内部线程都结束后 stop() 方法才返回。如果你没有在你的Camel 应用程序中调用CamelContext.start() 方法,那么由于内部线程并没有被创建那些消息将不会被处理。 如果你没有在你的Camel应用程序中调用CamelContext.stop()方法,那你你的应用将不会正常退出。如果你在一个JUnit 测试没有调用CamelContext.stop()方法,这可能会造成消息不能被完整地处理,而导致测试运行失败。
         ----camelContext.stop();

ProducerTemplate(CamelTemplate)
这个ProducerTemplate类对CamelContext进行了一个简单的封装。在ProducerTemplate中有向一个Endpoint发送Message或者Exchange的方法, ProducerTemplate提供了一条向Camel内部路由中的Endpoint发送消息的道路, 这样消息就可以在Camel内部的路由规则里面流动而到达指定的目标节点了。

Endpoint
Camel中的Endpoint类似webservice中的endpoint,即某个资源的位置。Camel使用URI来定位一个enpoint. Endpoint可以用来描述进程间通信
--- from(“file://xxxx").to("activemq://xxxx") 将某文件,读入并写入到ActiveMQ的JMS中. 此时file://xxxx是一个Endpointm 而activemq://xxxx s 是另一个endpoint.   file  and activemq are called components. 使用URI来定义endpoint
Camel所支持Endpoint。
    * 一个JMS队列。
    * 一个Web服务。
    * 一个文件。文件可能听起来不是一个典型的Endoint端点。但是你可以这么想,一些应用系统会把信息写到一个文件中,然后另一个应用程序可能读取该文件获得这一信息。
    * 一个FTP服务器。
    * 一个电子邮件地址。客户可以发送邮件到电子邮件地址,和一台服务器可以读取的这个从邮件服务器传入的邮件。
    * 一个POJO (普通旧Java对象)。
Message
Message 接口提供了一个对单个消息的抽象,这些消息可以是一个请求,回复或者是一个异常。
对于每个Camel支持的通讯技术来说,都需要提供一个Message接口的实现。例如JmsMessage就提供了一个Message接口的JMS实现. 在message接口中提供一个get/set方法来访问message id, body 以及message中每个单独header。
Exchange
exchange接口则表示了对message exchange的抽象, 也就是说一个请求消息以及与之对应的应答消息或者异常消息肯定会与一个Exchange相关联。对于Camel来说,请求和应答以及异常消息都分别被称为in, out 以及 fault message。
对于每个Camel所支持的通信技术来说来说,都需要一个实现了Exchang接口的的类.
Component
 Camel的内置组件(用户也可以按照Camel的接口约定,来定义自己的component), 用以提供对某种协议的资源访问的支持,例如file即为component, 其提供了对本地文件系统访问的支持,activemq是另一个component, 提供了camel访问以ActiveMQ实现的JMS的直接访问能力。'Component是创建Endpoint实力的工厂类'.
URI
myCamelContext.getEndpoint("pop3://john.smith@mailserv.example.com?password=myPassword");
此时getEndpoint中的参数为URI.




分享到:
评论

相关推荐

    camel-manual-2.0

    The architecture of Apache Camel is centered around the concept of routes. Routes are defined as a series of endpoints connected by processors, which perform transformations and routing of messages. ...

    Camel in action(camel实战)

    ### Apache Camel 在行动 #### 一、Apache Camel 概述 Apache Camel 是一个强大的 Java 框架,它使得开发者能够轻松地实现企业级集成模式。通过简洁而强大的领域特定语言(DSL),开发者可以像拼接乐高积木一样将...

    Cassandra-The-Definitive-Guide.pdf

    and this book uses the latest Camel release at the time of writing (Camel 2.5). We hope this book brings great value to you and helps you prosper in the Camel community. C LAUS I BSEN

    姜宁-我和Apache Camel这些年/Years of Apache Camel and I

    Apache Camel是Apache软件基金会下的一个开源集成框架,它实现了企业集成模式(Enterprise Integration Patterns,EIP),旨在简化在企业中的应用程序、系统和服务之间的集成工作。Camel支持多种传输协议,如HTTP、...

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

    - **Camel社区 (The Camel community)**:介绍了Camel社区的发展历史、贡献者和参与方式。 - **Akka与Camel (Akka and Camel)**:探讨了如何将Akka与Camel结合使用,以实现更高级别的并发和分布式计算。 综上所述,...

    Camel_Camel3Camel6函数_

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

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

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

    ApacheCamel-JDBC

    Apache Camel 是一个流行的开源集成框架,它允许开发者以声明式的方式定义路由和转换数据,使得在不同的软件组件之间实现通信变得更加简单。JDBC(Java Database Connectivity)是Java平台中的一个标准API,用于与...

    camel in action 中文版 第一章

    " Camel In Action 中文版第一章知识点" 本章节将对 Camel 框架进行介绍, Camel 是一个开源的一体化框架,其目的是使一体化系统更容易。本书的第一章节我们将介绍 Camel 及展示它适合大企事业单位的软件。你将会...

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

    Apache Camel 是一个强大的开源框架,专门用于构建企业级应用程序中的集成解决方案。它提供了一种声明式的方式,使得开发者可以轻松地定义数据路由和处理规则,从而实现系统间的通信。这个"Apache Camel 开发使用...

    CAMEL - Intelligent Networks for GSM, GPRS, UMTS Networks

    2.7 Evolution of the CAMEL Standard 19 2.7.1 Third-generation Partnership Project 19 2.7.2 CAMEL Standards and Specifications 21 2.8 Principles of CAMEL 22 2.8.1 Location Update Procedure 22 2.8.2 ...

    Camel in action PDF和源代码

    《Camel in Action》是关于Apache Camel这一企业级集成框架的专业书籍,这本书深入浅出地讲解了如何使用Camel构建高效、可维护的集成解决方案。PDF版本提供了方便的电子阅读体验,而源代码则帮助读者更好地理解书中...

    Camel实战中文版第四章.pdf

    ### Camel实战中文版第四章知识点解析 #### 一、章节概览 《Camel实战中文版第四章》主要探讨了Apache Camel框架中如何利用现有的Java Bean进行消息处理和服务调用。这一章节对于理解和掌握Camel如何与现有Java...

    Camel in action PDF和源码

    Camel in action 一书的PDF电子书 和源代码 The book is divided into three parts: ■ Part 1—First steps ■ Part 2—Core Camel ■ Part 3—Out in the wild

    Camel_应用开发文档.pdf

    Apache Camel 应用开发文档 Apache Camel 是一个基于 Java 的开源框架,用于集成多种协议、传输和数据格式的应用程序。下面是根据 Camel 应用开发文档生成的相关知识点: 1. Apache Camel 概述 Apache Camel 是一...

    apache camel 集成组件 教程

    ### Apache Camel 集成组件教程 #### 一、Apache Camel 概述 Apache Camel 是一个强大的开源消息中间件框架,旨在简化企业级应用中的消息处理逻辑。它提供了一种简单而灵活的方式来定义复杂的路由和数据转换规则。...

    ApacheCamel-Timer

    Apache Camel 是一个强大的开源集成框架,它允许开发者通过声明式的方式定义路由和转换数据流,使得构建企业级应用变得更加简单。Timer 组件是 Apache Camel 中的一个重要部分,它提供了定时触发事件的功能,类似于 ...

    Apache Camel 源码分析.rar

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

    camel文档

    ### Camel文档概述 根据提供的文件信息,这是一本关于Apache Camel的详尽指南,由Claudius Ibsen和Jonathan Anstey共同编著,并由Manning Publications出版。该书全面介绍了Apache Camel这一强大而灵活的企业集成...

Global site tag (gtag.js) - Google Analytics