前段时间和一些朋友聊过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对象)。
分享到:
相关推荐
在这篇文章中,我将提供一个Java语言(非Groovy)的ApacheCamel入门演示。首先创建一个Maven项目的pom.xml。在这里我们只用到了camel-core.jar包,实际上它提供了许多你可能用到的实用组件。出于日志记录的目的,我...
接上文动态循环路由的特点是开发人员可以通过条件表达式等方式,动态决定下一个路由位置。在下一路由位置处理完成后Exchange将被重新返回到路由判断点,并由动态循环路由再次做出新路径的判断。...
接上文EndpointDirect用于在两个编排好的路由间实现Exchange消息的连接,上一个路由中由最后一个元素处理完的Exchange对象,将被发送至由Direct连接的下一个路由起始位置(http://camel.apache.org/direct.html)。...
在这个专题中,我们介绍了相当数量技术组件:Flume、Kafka、ActiveMQ、Rabbitmq、Zookeeper、Thrift、Netty、DUBBO等等,还包括本文要进行介绍的ApacheCamel。有的技术组件讲得比较深入,有的技术组件则是点到为止。...
使用ConfigMap和Secrets的Spring-Boot Camel快速入门本快速入门演示了如何使用Kubernetes ConfigMap和Secrets配置Spring-Boot应用程序。 路由会生成示例消息,这些示例消息将传递到通过src/main/resources/...
本书适合入门学习,所有例子都有源码 1.Servicemix环境安装和配置 2.Eclipse开发环境安装搭建 3.用Bundle对应用组件模块化 4.Camel的应用和例子 Bundle之间的消息传递, Errorhandling 负载均衡 。。。。。。 5....
如:jetty、file、activemq、ftp、http、log、并行、分支、发送邮件、接收邮件、seda队列、timer定时器、netty4、quartz2定时器、zookeeper操作,只是简单案例,方便学习, 适合入门和研究camel。不喜勿喷...
camel in action 第二版,非常适合入门学习camel。camel没有中文书籍,英文书籍也不多。幸亏有camel in action,这一本就足够了。 本来不愿意去阅读英文书籍,英文水平也就考过(接近20年前)英语四级的水平。不过...
使用REST / SQL快速入门的Spring-Boot Camel快速入门 此示例演示如何通过JDBC和Camel的REST DSL一起使用SQL来公开RESTful API。 本示例依赖于进行构建配置,并使用。 该应用程序利用Spring 批注通过类路径上的src ...
Spring启动骆驼XML快速入门 本示例演示了如何通过Spring XML配置文件在Spring Boot中配置骆驼路线。 该应用程序利用Spring 批注通过类路径上的src / main / resources / spring / camel-context.xml文件加载Camel ...
通过Spring Boot学习Apache Camel ...分步详细信息Apache Camel和Spring Boot入门步骤01-Apache Camel和企业集成入门步骤02-创建用于与Apache Camel一起玩的微服务步骤03-创建您的第一个Apache Camel Route 步骤
弹簧靴骆驼快速入门本示例演示了如何基于将Apache Camel与Spring Boot结合使用。 快速入门使用Spring Boot配置一个小的应用程序,该应用程序包含一个骆驼路由,该路由每5秒触发一次消息,并将消息路由到日志。 该...
主要介绍了Apache Camel的Java编程入门指南,Apache Camel规则路由引擎中提供了很多Java可扩展接口,需要的朋友可以参考下
StackOverflow上有很多学习ApacheCamel的资源,而这里仅仅是使用一个实例来简单的介绍一下Apache CamelApacheCamel十一个Java库和引擎,有多种不同的整合模式,然而他并不是BPMN或者ESB,虽然可以在此引擎下实现他们...
springboot骆驼流口水快速入门 该示例演示了如何使用Apache Camel将在Kubernetes或OpenShift上运行的Spring-Boot应用程序与远程Kie Server集成在一起。 该应用程序利用Spring 批注通过类路径上的src / main / ...
Apache Camel学习目录,系统整合的最佳选择