第 19 章 JavaScript

概述

JavaScript(也称为 ECMAScript)是基于 Java 的脚本语言,允许快速解析对象。JavaScript 支持是 camel-script 模块的一部分。

添加 script 模块

要在路由中使用 JavaScript,您需要在您的项目中添加对 camelscript 的依赖项,如 例 19.1 “添加 camel-script 依赖项” 所示。

例 19.1. 添加 camel-script 依赖项

<!-- Maven POM File -->
<properties>
  <camel-version>2.23.2.fuse-7_10_0-00018-redhat-00001</camel-version>
  ...
</properties>

<dependencies>
  ...
  <dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-script</artifactId>
    <version>${camel-version}</version>
  </dependency>
  ...
</dependencies>

静态导入

要在应用程序代码中使用 javaScript() 静态方法,请在 Java 源文件中包含以下导入声明:

import static org.apache.camel.builder.script.ScriptBuilder.*;

内置属性

表 19.1 “JavaScript 属性” 列出在使用 JavaScript 时可以访问的内置属性。

表 19.1. JavaScript 属性

属性类型

context

org.apache.camel.CamelContext

Camel 上下文

Exchange

org.apache.camel.Exchange

当前交换

Request(请求)

org.apache.camel.Message

IN 信息

响应

org.apache.camel.Message

OUT 消息

属性

org.apache.camel.builder.script.PropertiesFunction

通过 解析 方法运行,可以更轻松地在脚本中使用属性组件。

ENGINE_SCOPE 设置的属性。

示例

例 19.2 “使用 JavaScript 的路由” 显示使用 JavaScript 的路由。

例 19.2. 使用 JavaScript 的路由

<camelContext>
  <route>
    <from uri="direct:start"/>
    <choice>
      <when>
        <langauge langauge="javaScript">request.headers.get('user') == 'admin'</langauge>
        <to uri="seda:adminQueue"/>
      </when>
      <otherwise>
        <to uri="seda:regularQueue"/>
      </otherwise>
    </choice>
  </route>
</camelContext>

使用属性组件

要从属性组件访问属性值,调用内置 属性属性 上的 解析 方法,如下所示:

.setHeader("myHeader").javaScript("properties.resolve(PropKey)")

其中 PropKey 是您要解析的属性的键,其中键值是 String 类型。

有关属性组件的详情,请参阅 Apache Camel 组件参考指南 中的 Properties