5.3. Message Endpoint
概述
消息端点 是应用和消息传递系统间的接口。如 图 5.3 “Message Endpoint Pattern” 所示,您可以有一个发件人端点,有时也称为代理或服务使用者,它负责发送来自消息,以及接收器端点(有时称为端点或服务),它负责接收消息。
图 5.3. Message Endpoint Pattern
端点的类型
Apache Camel 定义两种基本端点类型:
- 在 Apache Camel 路由开始时,消费者端点 TOKEN-RbacConfig Appears 并从传入频道(等同于 接收器 端点)中读取消息。
- 制作者 在 Apache Camel 路由末尾,执行者端点 TOKEN-RbacConfig Appears 并将消息写入传出频道(与 发件人 端点相同)。可以利用多个制作者端点定义路由。
端点 URI
在 Apache Camel 中,端点 URI 代表,通常封装以下数据类型:
- 消费者端点 numa-方式的端点 URI,用于特定位置(例如,向发送者提供服务),以进行连接。或者,URI 可以指定消息源,如消息队列。端点 URI 可以包括用于配置端点的设置。
- producer 端点 的 endpoint URI,tains 的详细信息,用于发送消息并包含用于配置端点的设置。在某些情况下,URI 指定远程接收器端点的位置;在其他情况下,目的地可能会具有抽象形式,如队列名称。
Apache Camel 中的端点 URI 具有以下通用形式:
ComponentPrefix:ComponentSpecificURI
其中,ComponentPrefix 是一个标识特定 Apache Camel 组件的 URI 前缀(有关所有 支持组件的详情,请参阅 Apache Camel 组件参考 )。URI 的其余部分是 component SpecificURI,具有特定组件定义的语法。例如,要连接到 JMS 队列 Foo.Bar
,您可以定义一个端点 URI,如下所示:
jms:Foo.Bar
要定义连接消费者端点 file://local/router/messages/foo
的路由,直接连接到制作者端点 jms:Foo.Bar
,您可以使用以下 Java DSL 片段:
from("file://local/router/messages/foo").to("jms:Foo.Bar");
另外,您可以在 XML 中定义相同的路由,如下所示:
<camelContext id="CamelContextID" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file://local/router/messages/foo"/>
<to uri="jms:Foo.Bar"/>
</route>
</camelContext>
动态到
& lt;toD
> 参数允许您使用串联在一起的一个或多个表达式向动态计算端点发送消息。
默认情况下,使用 Simple 语言计算端点。以下示例将信息发送到标头定义的端点:
<route> <from uri="direct:start"/> <toD uri="${header.foo}"/> </route>
在 Java DSL 中,同一命令的格式是:
from("direct:start") .toD("${header.foo}");
URI 也可以以文字形式加上前缀,如下例所示:
<route> <from uri="direct:start"/> <toD uri="mock:${header.foo}"/> </route>
在 Java DSL 中,同一命令的格式是:
from("direct:start") .toD("mock:${header.foo}");
在上例中,如果 header.foo 的值为 orange,则 URI 将解析为 mock:orange
。
要使用 Simple 以外的语言,您需要定义 language: 参数。请参阅 第 II 部分 “路由表达式和专用语言”。
使用不同语言的格式是在 URI 中使用 language:languagename:
。例如,使用 Xpath 的格式如下:
<route> <from uri="direct:start"/> <toD uri="language:xpath:/order/@uri/"> </route>
以下是 Java DSL 中的相同示例:
from("direct:start") .toD("language:xpath:/order/@uri");
如果没有指定 语言:
,端点是一个组件名称。在某些情况下,组件和语言具有相同的名称,如 xquery。
您可以使用 +
符号连接多个语言。在以下示例中,URI 是 Simple 和 Xpath 语言的组合。简单 是默认设置,因此不必定义语言。+
符号是 Xpath 指令后,通过 language:xpath
表示。
<route> <from uri="direct:start"/> <toD uri="jms:${header.base}+language:xpath:/order/@id"/> </route>
在 Java DSL 中,格式如下:
from("direct:start") .toD("jms:${header.base}+language:xpath:/order/@id");
许多语言一次可以串联,每个语言与 +
分开,并使用语言 :语言:语言指定
。
以下选项适用于 :
Name | 默认值 | 描述 |
| 必需:要使用的 URI。 | |
| 设置发送到端点时要使用特定的 Exchange Pattern。原始 MEP 之后会恢复。 | |
|
配置 | |
|
| 指定是否忽略无法解析的端点 URI。如果禁用,Camel 将抛出一个识别无效端点 URI 的异常。 |