`

Camel Routes

阅读更多

Routes

Camel supports the definition of routing rules using a Java DSL (domain specific language) which avoids the need for cumbersome XML using a RouteBuilder.

For example a simple route can be created as follows.

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
        errorHandler(deadLetterChannel("mock:error"));

        from("direct:a").to("direct:b");
    }
};

As you can see from the above Camel uses URIs to wire endpoints together.

URI String formatting

Available as of Camel 2.0

If you have endpoint URIs that accept options and you want to be able to substitute the value, e.g. build the URI by concat the strings together, then you can use the java.lang.String.format method. But in Camel 2.0 we have added two convenient methods in the Java DSL so you can do fromF and toF that uses String formatting to build the URI.

from("direct:start").toF("file://%s?fileName=%s", path, name);

fromF("file://%s?include=%s", path, pattern).toF("mock:%s", result);

Filters

You can combine simple routes with filters which can be arbitrary Predicate implementations.

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
        errorHandler(deadLetterChannel("mock:error"));

        from("direct:a")
            .filter(header("foo").isEqualTo("bar"))
                .to("direct:b");
    }
};

Choices

With a choice you provide a list of predicates and outcomes along with an optional default otherwise clause which is invoked if none of the conditions are met.

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
        errorHandler(deadLetterChannel("mock:error"));

        from("direct:a")
            .choice()
                .when(header("foo").isEqualTo("bar"))
                    .to("direct:b")
                .when(header("foo").isEqualTo("cheese"))
                    .to("direct:c")
                .otherwise()
                    .to("direct:d");
    }
};

Using a custom processor

Here is an example of using a custom Processor

myProcessor = new Processor() {
    public void process(Exchange exchange) {
        log.debug("Called with exchange: " + exchange);
    }
};

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
        errorHandler(deadLetterChannel("mock:error"));

        from("direct:a")
            .process(myProcessor);
    }
};

You can mix and match custom processors with filters and choices.

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
        errorHandler(deadLetterChannel("mock:error"));

        from("direct:a")
            .filter(header("foo").isEqualTo("bar"))
                .process(myProcessor);
    }
};

Interceptors

Here is an example of adding a few custom InterceptorProcessor objects to a processing pipeline:

RouteBuilder builder = new RouteBuilder() {
    public void configure() {
        errorHandler(deadLetterChannel("mock:error"));

        from("direct:a")
            .filter(header("foo").isEqualTo(123))
                .to("direct:b");
    }
};

When you start defining and interceptor stack with intercept(), you must follow up with the subsequent .target() so that the target of the interceptor stack is properly registered.

分享到:
评论

相关推荐

    cxfrs-routing:在JBoss Fuse平台上创建Apache Camel Routes的示例项目

    JBoss保险丝中的骆驼布线 这是一个示例项目,用于在通过使用CXFRS公开的JBoss Fuse平台上创建Apache骆驼路由。 入门 本指南假定您已安装以下设备: 创建OSGI包 可以通过在项目的根目录下运行以下maven命令来创建...

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

    Camel的核心组件是路由规则(Routes),这些规则定义了消息如何从一个端点(Endpoint)流向另一个端点。 2. **服务集成** 在Camel中,服务集成主要通过定义路由来实现。路由由一系列的处理步骤(Steps)组成,这些...

    Camel in action PDF和源代码

    该框架的核心概念是“路由规则”(Routes),这些规则定义了数据流如何在不同系统间传输。Camel支持大量协议和API,包括HTTP、JMS、FTP、SFTP、SMTP等,以及各种企业服务总线(ESB)和消息中间件。 PDF电子书...

    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. ...

    亲测好用——Apache Camel简介以及使用场景.pptx.zip

    - **路由(Routes)**:Camel 路由定义了消息从源到目的地的路径,通常包含“from”和“to”端点。 - **处理器(Processors)**:在路由中,可以添加处理器来执行特定操作,如转换消息内容、过滤或聚合数据。 - *...

    apache-camel-spring-demo

    Apache Camel ™ is a versatile open-source integration framework based on known Enterprise Integration Patterns. Camel empowers you to ... Camel also has extensive support for unit testing your routes.

    apache-camel-2.8.5.tar.gz

    Apache Camel 的核心概念是基于“路由规则”(Routes),这些规则定义了数据如何从一个地方流向另一个地方。它支持多种消息传输协议,如HTTP、JMS、FTP、TCP等,以及数据格式,如XML、JSON等。Camel 使用一种称为...

    Apache Camel USER GUIDE Version 2.3.0

    1. **Routes (路由)**:路由定义了消息在不同端点之间的流动路径。每个路由都由一系列处理器组成,这些处理器负责执行特定的操作,如转换、过滤或分发消息。 2. **Endpoints (端点)**:端点是 Camel 路由中的输入和...

    apache-camel-2.9.1-src.zip

    Apache Camel的核心概念是基于路由规则(Routes),这些规则定义了如何将输入的数据(Message)通过各种组件(Components)转发到目标系统。例如,你可以使用Camel创建一个路由,从FTP服务器接收文件,然后将这些...

    apache-camel-2.8.2.tar.gz

    Apache Camel 的核心理念是“路由规则”(Routes),这些路由规则定义了数据如何从一个源头(Endpoint)传输到另一个目的地。在 `apache-camel-2.8.2` 包中,我们可以期待找到以下组件和资源: 1. **Camel 引擎**:...

    apache-camel-2.12.5-src.zip

    Apache Camel的核心概念是基于路由规则(Routes),这些规则定义了如何在不同的端点(Endpoints)之间传输数据。例如,你可以设置规则将来自HTTP请求的数据转换为JMS消息,然后发送到一个特定的队列。Camel使用一种...

    apache-camel-2.9.3.tar.gz

    Apache Camel 的核心概念是基于“路由规则”(Routes),这些规则定义了数据如何从一个地方传输到另一个地方。它支持大量的协议和数据格式,包括 HTTP、JMS、FTP、SMTP、XML 和 JSON,使得开发者能够轻松地连接各种...

    apache-camel-2.9.7.tar.gz

    1. **Apache Camel**:Apache Camel 提供了一个模型,该模型基于“路由规则”(Routes)来定义数据如何在不同的组件、协议和服务之间流动。这些路由规则使用简单的DSL(领域特定语言)或XML进行编写,使得代码更易读...

    apache-camel-2.8.0-src.zip

    它使用“路由规则”(Routes),这些规则基于一系列称为“组件”的模块化连接器来定义数据流。 2. **版本2.8.0**:这是Camel的一个重要里程碑,发布于2012年。这个版本包含了一些新特性、改进和修复的错误。比如,...

    apache-camel-1.6.0-src.tar.gz

    Apache Camel 的核心概念是基于路由规则(Routes),这些规则定义了如何处理来自不同数据源的消息。在1.6.0版本中,用户可以使用Java、XML或者基于Groovy、Scala等语言的DSL(领域特定语言)来定义路由。例如,你...

    apache-camel-1.3.0-src.zip

    Apache Camel 的核心概念是基于路由规则(Routes)来处理数据流。这些路由规则定义了如何从一个数据源接收信息,然后转换和传递到目的地。它支持多种协议和数据格式,包括HTTP、JMS、FTP、SMTP、XML以及各种数据库...

    vacation-camel-xml:使用 Apache Camel 及其 XML DSL 实现的假期集成示例

    1. **路由定义**:XML 文件中会定义多个路由(routes),每个路由描述了一个从输入到输出的数据流。 2. **处理器**:在路由中,可能会有多个处理器(processors)定义,它们执行特定的业务逻辑,如验证请假申请、...

    Camel

    骆驼(Camel)这个名字来源于其特性——能够灵活地在各种不同的“路线”(Routes)之间运输数据,就像骆驼在沙漠中跨越多种地形一样。 在Java世界中,Camel支持众多协议和标准,包括HTTP、JMS、FTP、SMTP、数据库、...

    ApacheCamel:Estudo Sobre Apache骆驼

    - **路由(Routes)**:Apache Camel 中的核心是路由,它们定义了数据如何从一个端点到另一个端点流动。每个路由由一个起点(from)和一个或多个终点(to/direct/toF)组成,中间可以包含一系列转换和处理步骤。 - ...

Global site tag (gtag.js) - Google Analytics