目录
阅读时间: 5 分钟
简介
Apache camel是一个开源的框架。Apache Camel是一个基于规则的路由和调解引擎,它提供了一个基于Java对象的企业集成模式的实现,使用API来配置路由和调解规则。我们可以说它是一种特定领域的语言,意味着Apache Camel可以在集成开发环境中使用常规的Java代码支持类型安全的智能完成路由规则,而不需要大量的XML配置文件,当然也支持Spring里面的XML配置。
Apache camel是一个开源的框架,提供了一个基于规则的路由和调解引擎。它本质上提供了各种EIP的实现。它通过提供与大量传输和API的连接,使集成变得更容易。例如,你可以轻松地将JMS路由到JSON,JSON到JMS,HTTP到JMS,FTP到JMS,甚至HTTP到HTTP,以及连接到微服务。你只需要在两端提供适当的端点。
概述
Camel是可扩展的,所以可以说它在未来会非常有用,更多的端点可以很容易地被添加到框架中。在面向服务架构的基础设施项目中,Camel经常与Apache ServiceMix、Apache ActiveMQ和Apache CXF一起使用。
当有连接系统的要求时,你可能需要连接到一些数据源,然后处理这些数据以符合你的业务要求。
为了做到这一点。
1)你可以开发一个自定义的程序来做这件事(可能很费时,而且很难理解,对另一个开发者来说,也很难维护)。
- 或者,你可以用它来做一个标准化的方式(它已经为你开发了大部分的连接器,你只需要设置它并插入你的逻辑--称为流程)。
骆驼将帮助你:
* 从任何来源/格式获取数据
* 处理这些数据
输出数据到任何来源/格式
通过使用Apache Camel,理解/维护/扩展你的系统给另一个开发者将会变得非常容易。
Apache Camel是用企业集成模式开发的。我们知道它也是一个开源的框架,这些模式可以帮助你以一种好的方式整合系统。
Apache Camel是一个开源的框架。Apache Camel "的目的是将 "消息 "从一个 "系统 "传送到世界上的另一个系统。Apache Camel使用不同的传输机制。消息路由Apache Camel使用 "来自 "系统的 "基于Camel的组件 "拾取消息,并使用 "到 "系统的 "基于Camel的组件 "丢弃它们。一条消息可以路由到多个系统,但在任何地方
它们都必须通过 "基于Camel的组件",在 "Apache Camel的底层传输机制 "和系统之间旅行。Camel有助于路由、转换和监控。它的用途 路由可以被描述为 。
当服务总线收到一个特定的消息时,它将通过一些服务/经纪商的目的地(如队列/主题)来路由它。这个路径被称为路由
例如,如果你的股票应用程序从分析器得到了一些输入,它将通过应用程序组件进行处理,然后将结果发布给所有注册会员,以获得特定的股票更新。
为上述业务问题创建一个定制的解决方案将意味着编写大量的Java代码。我们需要将Request对象从其源格式映射并转换为目标格式。我们可以使用Java线程来并行调用两个航空公司的Web服务,设置事件监听器来等待两个服务的响应,并管理支持任务,如日志和异常处理。使用Apache Camel作为集成框架可以简化大量的编程。我们可以简单地利用Camel的API和组件,它们被设计用来解决大多数具有标准企业集成模式(EIPs)的Web服务集成任务。我们不是用Java代码,而是用一种精简的特定领域语言(DSL)工作。
Apache Camel提供基于Java、Scala、Groovy或XML的DSL。在这种情况下,我们将使用Camel的基于XML的Spring DSL来指定路由并配置我们的集成层。
什么时候使用Apache Camel:-
如果你想用不同的协议和技术来整合几个应用程序,Apache Camel是非常棒的。为什么呢?有一个特点(除了支持这么多的技术和支持不同的编程语言),真的是非常值得赞赏的。每一个集成都使用相同的概念!无论你使用哪种协议。无论你使用哪种特定领域的语言(DSL)--它可以是Java、Scala、Groovy或Spring XML。你都以同样的方式进行。始终如此!有一个生产者,有一个消费者,有端点,有EIP,有自定义处理器,有参数。
它是一个黑盒子,从某个端点接收消息并将其发送到另一个端点。在这个黑匣子里,消息可以被处理或简单地重定向。
Apache Camel是一个开源的框架。它是一个面向消息的中间件,提供一个基于规则的路由和调解引擎。你可以定义一些规则,例如,如果它是一个 "牛奶 "订单,就把它重定向到牛奶供应商,如果它是一个 "石油 "订单,就把它重定向到石油供应商,等等。使用Camel,你将能够实现这些规则并在熟悉的Java代码中进行路由。
这意味着你可以在一个类型安全的环境中使用你熟悉的Java IDE来定义这些规则。我们不需要使用XML配置文件,这些文件通常都很笨重。如果你喜欢使用XML来配置规则,Camel通过Spring框架支持XML配置。你甚至可以使用Blueprint XML配置文件,如果你是一个Scala爱好者,甚至可以使用Scala DSL。这也意味着你可以使用你最喜欢的Java、Scala IDE,甚至是一个简单的XML编辑器来配置规则。
这个引擎的输入可以是逗号分隔的文本文件、POJO(Plain Old Java Object)或XML(Camel支持的其他几种格式)。同样,该引擎的输出可以重定向到一个文件、一个消息队列,甚至可以重定向到你的显示器屏幕上,以便你查看发送给各个供应商的订单。
特点:-
我们已经知道Apache Camel是一个开源的Java框架,本质上提供了各种EIP的实现。Camel通过提供与非常多的运输工具和API的连接,使整合更加容易。例如,你可以轻松地将JMS路由到JSON,JSON路由到JMS,HTTP路由到JMS,FTP路由到JMS,甚至HTTP路由到HTTP,以及连接到微服务。你只需要在两端提供适当的端点。Camel是可扩展的,因此在未来,更多的端点可以轻松地添加到框架中。
骆驼HelloWorld的例子 -。
这是它的路由。我们使用Camel的定时器组件
from("timer://myTimer?period=2000")
.setBody()
.simple("Hello World Camel fired at {header.firedTime}'文本。
${header.firedTime}将被替换成发射时间。
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
public class CamelHelloWorldTimerExample {
public static void main(String[] args) throws Exception {
CamelContext context = new DefaultCamelContext();
try {
context.addRoutes(new RouteBuilder() {
@Override
public void configure() throws Exception {
from("timer://myTimer?period=2000")
.setBody()
.simple("Hello World Camel fired at ${header.firedTime}")
.to("stream:out");
}
});
context.start();
Thread.sleep(10000);
} finally {
context.stop();
}
}
}
总结
我们知道Apache Camel是一个开源的框架,所以它提供了一个现成的框架,实现了EIPs,以减轻你的集成项目。它支持用特定领域的语言进行编码,也支持使用XML。