Apache Camel 组件参考
配置 Camel 组件参考
摘要
第 1 章 组件概述 复制链接链接已复制到粘贴板!
本章介绍可用于 Apache Camel 的所有组件。
1.1. 容器类型 复制链接链接已复制到粘贴板!
Red Hat Fuse 提供各种容器类型,您可以在其中部署 Camel 应用程序:
- Spring Boot
- Apache Karaf
- JBoss Enterprise Application Platform (JBoss EAP)
此外,Camel 应用可以作为 无容器运行 :即,Camel 应用直接在 JVM 中运行,无需任何特殊容器。
在某些情况下,Fuse 可能会支持一个容器中的 Camel 组件,但不支持其他组件。这样做有多种原因,但在某些情况下,某个组件不适合所有容器类型。例如,camel-ejb 组件专为 Java EE (即 JBoss EAP)而设计的,它无法在其他容器类型中受支持。
1.2. 支持的组件 复制链接链接已复制到粘贴板!
请注意以下密钥:
| 符号 | 描述 |
|---|---|
| ✔ | 支持 |
| ❌ | 不支持或者还没有支持 |
| 已弃用 | 以后的发行版本中可能会删除 |
表 1.1 “Apache Camel 组件支持列表” 提供有关在哪些容器中支持哪些 Camel 组件的综合详情。
| 组件 | 容器无容器 | Spring Boot 2.x | Karaf | JBoss EAP |
|---|---|---|---|---|
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| 已弃用 | 已弃用 | 已弃用 | ✔ |
|
| ✔ | ❌ | ✔ | ❌ |
|
| ✔ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ❌ | 已弃用 | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ❌ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ❌ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| 已弃用 | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | ❌ | ❌ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ❌ | ❌ |
|
| 已弃用 | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ❌ | ❌ | ❌ |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ❌ | ✔ | ❌ |
|
| ✔ | ❌ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ❌ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ❌ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ❌ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | 已弃用 |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | ✔ | ❌ |
|
| 已弃用 | 已弃用 | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
| ✔ | ✔ |
| 已弃用 | ❌ |
| ✔ | ❌ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ❌ |
| ✔ | ❌ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ❌ |
| 已弃用 | ❌ |
| ✔ | ❌ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ |
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ❌ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ✔ | 已弃用 | ❌ |
|
| 已弃用 | 已弃用 | 已弃用 | 已弃用 |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ❌ | ❌ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ❌ | ❌ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ❌ | ✔ |
|
| ✔ | ❌ | ❌ | ✔ |
|
| ✔ | ✔ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ❌ | ✔ |
|
| ✔ | ✔ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | ❌ | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ✔ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ✔ | ❌ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ❌ |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ❌ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 组件 | 容器无容器 | Spring Boot 2.x | Karaf | JBoss EAP |
|---|---|---|---|---|
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | 已弃用 |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | ✔ |
|
| 已弃用 | 已弃用 | 已弃用 | 已弃用 |
|
| ❌ | ❌ | ❌ | ❌ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
|
| ✔ | ✔ | ✔ | ✔ |
| 语言 | 容器无容器 | Spring Boot 2.x | Karaf | JBoss EAP |
|---|---|---|---|---|
| bean 方法 | ✔ | ✔ | ✔ | ✔ |
| 常数 | ✔ | ✔ | ✔ | ✔ |
| EL | 已弃用 | ❌ | ❌ | ❌ |
| ExchangeProperty | ✔ | ✔ | ✔ | ✔ |
| File | ✔ | ✔ | ✔ | ✔ |
| groovy | ✔ | ✔ | ✔ | ✔ |
| 标头 | ✔ | ✔ | ✔ | ✔ |
| JsonPath | ✔ | ✔ | ✔ | ✔ |
| JXPath | 已弃用 | ❌ | ❌ | ❌ |
| MVEL | ✔ | ✔ | ✔ | ✔ |
| OGNL | ✔ | ✔ | ✔ | ✔ |
| PHP | 已弃用 | 已弃用 | ❌ | 已弃用 |
| Python | 已弃用 | 已弃用 | ❌ | 已弃用 |
| Ref | ✔ | ✔ | ✔ | ✔ |
| Ruby | 已弃用 | 已弃用 | ❌ | 已弃用 |
| Simple(简单) | ✔ | ✔ | ✔ | ✔ |
| SpEL | ✔ | ✔ | ❌ | ✔ |
| 令牌化 | ✔ | ✔ | ✔ | ✔ |
| XML 令牌化 | ✔ | ✔ | ✔ | ✔ |
| XPath | ✔ | ✔ | ✔ | ✔ |
| XQuery | ✔ | ✔ | ✔ | ✔ |
第 2 章 ActiveMQ 复制链接链接已复制到粘贴板!
ActiveMQ 组件 复制链接链接已复制到粘贴板!
ActiveMQ 组件允许消息发送到 JMS Queue 或 Topic;或使用 Apache ActiveMQ 从 JMS Queue 或 Topic 使用消息。
此组件基于 第 178 章 JMS 组件,并使用 Spring 的 JMS 支持声明事务,使用 Spring 的 JmsTemplate 来发送和接收 MessageListenerContainer 进行消耗。第 178 章 JMS 组件 组件中的所有选项也适用于此组件。
要使用此组件,请确保您的 classpath 上的 activemq.jar 或 activemq-core.jar 与 Camel 依赖关系(如 camel-core.jar、camel-spring.jar 和 camel-jms.jar.
如果您在使用 JMS 的事务时,请参阅 JMS 页面中的事务和缓存级别 部分,因为它可能会影响性能。
URI 格式 复制链接链接已复制到粘贴板!
activemq:[queue:|topic:]destinationName
activemq:[queue:|topic:]destinationName
其中 destinationName 是 ActiveMQ 队列或主题名称。默认情况下,targetName 解释为队列名称。例如,要连接到队列 FOO.BAR,请使用:
activemq:FOO.BAR
activemq:FOO.BAR
如果需要,可以包括可选 queue: 前缀:
activemq:queue:FOO.BAR
activemq:queue:FOO.BAR
要连接到一个主题,您必须包括 主题: 前缀。例如,要连接到该主题的 Stocks.Prices,请使用:
activemq:topic:Stocks.Prices
activemq:topic:Stocks.Prices
选项 复制链接链接已复制到粘贴板!
请参阅 第 178 章 JMS 组件 组件中的 Options,因为所有这些选项也适用于这个组件。
Camel on EAP 部署 复制链接链接已复制到粘贴板!
该组件受到 EAP (Wildfly Camel)框架的 Camel 支持,该框架在红帽 JBoss 企业应用平台(JBoss EAP)容器上提供简化的部署模型。
您可以配置 ActiveMQ Camel 组件,以便使用嵌入式代理或外部代理。要在 JBoss EAP 容器中嵌入代理,请在 EAP 容器配置文件 进行 ActiveMQ 资源适配器中配置 ActiveMQ 资源适配器来详情,请参阅 ActiveMQ 资源适配器配置。
配置连接工厂 复制链接链接已复制到粘贴板!
以下 测试案例 说明了如何在使用 activeMQComponent () 方法 添加到 CamelContext 中,同时指定用于连接 ActiveMQ 的 brokerURL。
camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
camelContext.addComponent("activemq", activeMQComponent("vm://localhost?broker.persistent=false"));
使用 Spring XML 配置 ConnectionFactory 复制链接链接已复制到粘贴板!
您可以在 ActiveMQComponent 上配置 ActiveMQ 代理 URL,如下所示
使用连接池 复制链接链接已复制到粘贴板!
使用 Camel 发送到 ActiveMQ 代理时,建议使用池连接工厂来处理 JMS 连接、会话和制作者的有效池。这记录在 ActiveMQ Spring Support 的页面。
您可以使用 Maven 获取 Jencks AMQ 池:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
<version>5.3.2</version>
</dependency>
然后,按照如下所示设置 activemq 组件:
请注意池连接工厂上的 init 和 destroy 方法。务必要确保连接池已正确启动和关闭。
然后,PooledConnectionFactory 将创建一个同时使用最多 8 个连接的连接池。每个连接可由许多会话共享。有一个名为 maxActive 的选项,可用于配置每个连接的最大会话数;默认值为 500。在 ActiveMQ 5.7 上,选项已被重命名为,以更好地反映其用途,被命名为 maxActiveSessionPerConnection。注意 并发Consumers 设置为高于 maxConnections 的值。这为好,因为每个消费者都使用会话,而作为会话可以共享同一连接,我们就安全。在这个示例中,我们可以同时有 8 * * 500 = 4000 个活跃会话。
在路由中调用 MessageListener POJO 复制链接链接已复制到粘贴板!
ActiveMQ 组件还向 Processor 提供帮助 Type Converter from a JMS MessageListener。这意味着,第 43 章 Bean 组件 组件能够直接调用任何 JMS MessageListener bean。
例如,您可以在 JMS 中创建 MessageListener,如下所示:
public class MyListener implements MessageListener {
public void onMessage(Message jmsMessage) {
// ...
}
}
public class MyListener implements MessageListener {
public void onMessage(Message jmsMessage) {
// ...
}
}
然后,在您的路由中使用它,如下所示
from("file://foo/bar").
bean(MyListener.class);
from("file://foo/bar").
bean(MyListener.class);
也就是说,您可以重复使用任何 Apache Camel 组件并将其集成到您的 JMS MessageListener POJO\!
使用 ActiveMQ 目的地选项 复制链接链接已复制到粘贴板!
ActiveMQ 5.6 提供
您可以使用 "destination." 前缀在 endpoint uri 中配置 Destination Options。例如,要将消费者标记为独占,并将其预先大小设定为 50,您可以执行以下操作:
使用公告消息 复制链接链接已复制到粘贴板!
ActiveMQ 可以生成公告消息,它们放入您可以使用的主题。这些消息可以帮助您发送警报,以检测缓慢的消费者或者构建统计信息(每天的信息/生成的数量等) 以下 Spring DSL 示例显示如何从主题读取消息。
如果您在队列上使用消息,您应该会看到 data/activemq 文件夹下的以下文件:
advisoryConnection-20100312.txt advisoryProducer-20100312.txt
并包含字符串:
获取组件 JAR 复制链接链接已复制到粘贴板!
您需要此依赖项:
-
activemq-camel
ActiveMQ 是与 ActiveMQ 项目 发布的 第 178 章 JMS 组件 组件的扩展。
<dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-camel</artifactId> <version>5.6.0</version> </dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-camel</artifactId>
<version>5.6.0</version>
</dependency>
第 3 章 AHC 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.8 使用
ahc: 组件为消耗外部 HTTP 资源(作为使用 HTTP 调用外部服务器的客户端)提供基于 HTTP 的端点。
组件使用 Async Http Client 库。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
3.1. URI 格式 复制链接链接已复制到粘贴板!
ahc:http://hostname[:port][/resourceUri][?options] ahc:https://hostname[:port][/resourceUri][?options]
ahc:http://hostname[:port][/resourceUri][?options]
ahc:https://hostname[:port][/resourceUri][?options]
默认情况下,将端口 80 用于 HTTP,443 用于 HTTPS。
您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…
3.2. AhcEndpoint 选项 复制链接链接已复制到粘贴板!
AHC 端点使用 URI 语法进行配置:
ahc:httpUri
ahc:httpUri
使用以下路径和查询参数:
3.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| httpUri | 要使用的 URI,如 http://hostname:port/path | URI |
3.2.2. 查询参数(13 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| bridgeEndpoint (producer) | 如果 选项为 true,则忽略 Exchange.HTTP_URI 标头,并使用端点的 URI 请求。您也可以将 throwExceptionOnFailure 设为 false,以便 AhcProducer 发送所有故障响应。 | false | 布尔值 |
| bufferSize (producer) | 在 Camel 和 AHC 客户端之间传输数据时使用的初始内存缓冲大小。 | 4096 | int |
| connectionClose (producer) | 定义是否需要将 Connection Close 标头添加到 HTTP Request 中。此参数默认为 false | false | 布尔值 |
| cookieHandler (producer) | 配置 Cookie 处理程序以维护 HTTP 会话 | CookieHandler | |
| headerFilterStrategy (producer) | 使用自定义 HeaderFilterStrategy 过滤来自 Camel 消息的标头。 | HeaderFilterStrategy | |
| throwExceptionOnFailure (producer) | 如果来自远程服务器的失败响应,禁用引发 AhcOperationFailedException 的选项。这可让您获得所有响应,无论 HTTP 状态代码如何。 | true | 布尔值 |
| transferException (producer) | 如果启用并交换在消费者端的处理失败,如果导致的 Exception 在响应中作为 application/x-java-serialized-object 内容类型(例如,使用 Jetty 或 Servlet Camel 组件)发送了序列化处理。在制作者端,异常会按原样进行反序列化和引发,而不是 AhcOperationFailedException。导致的异常需要被序列化。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| binding (advanced) | 使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。 | AhcBinding | |
| clientConfig (advanced) | 将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。 | AsyncHttpClientConfig | |
| clientConfigOptions (advanced) | 使用 map 中的键/值配置 AsyncHttpClientConfig。 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| clientConfigRealmOptions (security) | 使用 map 中的 key/value 配置 AsyncHttpClientConfig Realm。 | map | |
| sslContextParameters (security) | 引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。这个引用会覆盖组件级别的任何配置的 SSLContextParameters。请参阅使用 JSSE 配置实用程序。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。 | SSLContextParameters |
3.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 9 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.ahc.allow-java-serialized-object | 当请求使用 context-type=application/x-java-serialized-object (默认为 off)时,是否允许 java serialization。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| camel.component.ahc.binding | 使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。选项是一个 org.apache.camel.component.ahc.AhcBinding 类型。 | 字符串 | |
| camel.component.ahc.client | 使用自定义 AsyncHttpClient。选项是 org.asynchttpclient.AsyncHttpClient 类型。 | 字符串 | |
| camel.component.ahc.client-config | 将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。选项是 org.asynchttpclient.AsyncHttpClientConfig 类型。 | 字符串 | |
| camel.component.ahc.enabled | 启用 ahc 组件 | true | 布尔值 |
| camel.component.ahc.header-filter-strategy | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。选项是一个 org.apache.camel.spi.HeaderFilterStrategy 类型。 | 字符串 | |
| camel.component.ahc.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.ahc.ssl-context-parameters | 引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。选项是一个 org.apache.camel.util.jsse.SSLContextParameters 类型。 | 字符串 | |
| camel.component.ahc.use-global-ssl-context-parameters | 启用使用全局 SSL 上下文参数。 | false | 布尔值 |
3.4. AhcComponent Options 复制链接链接已复制到粘贴板!
AHC 组件支持 8 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| client (advanced) | 使用自定义 AsyncHttpClient | AsyncHttpClient | |
| binding (advanced) | 使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。 | AhcBinding | |
| clientConfig (advanced) | 将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。 | AsyncHttpClientConfig | |
| sslContextParameters (security) | 引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。 | SSLContextParameters | |
| allowJavaSerialized Object (advanced) | 当请求使用 context-type=application/x-java-serialized-object (默认为 off)时,是否允许 java serialization。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| useGlobalSslContext Parameters (security) | 启用使用全局 SSL 上下文参数。 | false | 布尔值 |
| headerFilterStrategy (filter) | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。 | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
请注意,在 AhcComponent 上设置任何选项会将这些选项传播到正在创建的 AhcEndpoints 中。但是 AhcEndpoint 还可以配置/覆盖自定义选项。在端点上设置的选项将始终优先于 AhcComponent 中的选项。
3.5. 消息标头 复制链接链接已复制到粘贴板!
| 名称 | 类型 | 描述 |
|---|---|---|
|
|
| 要调用的 URI。将覆盖端点上直接设置的现有 URI。 |
|
|
|
请求 URI 的路径,标头将使用 HTTP_URI 构建请求 URI。如果路径以 "/" 开始,http producer 将尝试根据 Exchange.HTTP_BASE_URI 标头或 |
|
|
| 下一个 Camel 2.11: URI 参数.将覆盖端点上直接设置的现有 URI 参数。 |
|
|
| 外部服务器的 HTTP 响应代码。为 200,表示确定。 |
|
|
| 字符编码. |
|
|
|
HTTP 内容类型。在 IN 和 OUT 消息上设置,以提供内容类型,如 |
|
|
|
HTTP 内容编码。在 IN 和 OUT 消息上设置,以提供内容编码,如 |
3.6. Message Body 复制链接链接已复制到粘贴板!
Camel 会将来自外部服务器的 HTTP 响应存储在 OUT 正文中。来自 IN 消息的所有标头都将复制到 OUT 消息,因此在路由过程中保留标头。另外,Camel 还会将 HTTP 响应标头添加到 OUT 消息标头中。
3.7. 响应代码 复制链接链接已复制到粘贴板!
Camel 将根据 HTTP 响应代码处理:
- 响应代码位于 100.299 范围中,Camel 被视为成功的响应。
-
响应代码位于 300..399 范围中,Camel 被视为重定向响应,并将使用信息抛出
AhcOperationFailedException。 响应代码为 400+,Camel 将它作为外部服务器故障相关,并将引发
AhcOperationFailedException及信息。throwExceptionOnFailure
选项
throwExceptionOnFailure可以设为false,以防止AhcOperationFailedException引发失败的响应代码。这可让您从远程服务器获得任何响应。
3.8. AhcOperationFailedException 复制链接链接已复制到粘贴板!
这个例外包含以下信息:
- HTTP 状态代码
- HTTP 状态行(状态代码的文本)
- 重定向位置,如果服务器返回重定向
-
如果服务器提供了正文作为响应,响应正文作为
java.lang.String。
3.9. 使用 GET 或 POST 调用 复制链接链接已复制到粘贴板!
以下算法用于确定是否应该使用 GET 或 POST HTTP 方法:
.使用标头中提供的方法。
2.如果标头中提供了查询字符串,则 GET。
3.如果端点配置了查询字符串,则 GET。
4.POST 如果存在要发送的数据(其他人不是 null)。
5.否则 GET。
3.10. 配置要调用的 URI 复制链接链接已复制到粘贴板!
您可以直接设置 HTTP producer 的 URI 来直接组成端点 URI。在以下路由中,Camel 使用 HTTP 调用外部服务器 oldhost。
from("direct:start")
.to("ahc:http://oldhost");
from("direct:start")
.to("ahc:http://oldhost");
以及对等的 Spring 示例:
您可以通过在消息中添加使用密钥 Exchange.HTTP_URI 的标头来覆盖 HTTP 端点 URI。
from("direct:start")
.setHeader(Exchange.HTTP_URI, constant("http://newhost"))
.to("ahc:http://oldhost");
from("direct:start")
.setHeader(Exchange.HTTP_URI, constant("http://newhost"))
.to("ahc:http://oldhost");
3.11. 配置 URI 参数 复制链接链接已复制到粘贴板!
ahc producer 支持将 URI 参数发送到 HTTP 服务器。URI 参数可以直接在端点 URI 上设置,或者作为在消息中带有密钥 Exchange.HTTP_QUERY 的标头设置。
from("direct:start")
.to("ahc:http://oldhost?order=123&detail=short");
from("direct:start")
.to("ahc:http://oldhost?order=123&detail=short");
标头中提供的 或 选项:
from("direct:start")
.setHeader(Exchange.HTTP_QUERY, constant("order=123&detail=short"))
.to("ahc:http://oldhost");
from("direct:start")
.setHeader(Exchange.HTTP_QUERY, constant("order=123&detail=short"))
.to("ahc:http://oldhost");
3.12. 如何将 http 方法设置为 HTTP producer 复制链接链接已复制到粘贴板!
HTTP 组件通过设置 message 标头来提供设置 HTTP 请求方法的方法。以下是一个示例:
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.to("ahc:http://www.google.com")
.to("mock:results");
from("direct:start")
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.to("ahc:http://www.google.com")
.to("mock:results");
以及对等的 Spring 示例:
3.13. 配置 charset 复制链接链接已复制到粘贴板!
如果使用 POST 来发送数据,您可以使用 Exchange 属性配置 charset :
exchange.setProperty(Exchange.CHARSET_NAME, "iso-8859-1");
exchange.setProperty(Exchange.CHARSET_NAME, "iso-8859-1");
3.13.1. 端点 URI 的 URI 参数 复制链接链接已复制到粘贴板!
在本例中,我们拥有完整的 URI 端点,该端点只是您在 Web 浏览器中键入的内容。可以使用 和 字符作为分隔符来设置多个 URI 参数,就像在 Web 浏览器中一样。此处 Camel 没有技巧。
// we query for Camel at the Google page
template.sendBody("ahc:http://www.google.com/search?q=Camel", null);
// we query for Camel at the Google page
template.sendBody("ahc:http://www.google.com/search?q=Camel", null);
3.13.2. 消息中的 URI 参数 复制链接链接已复制到粘贴板!
Map headers = new HashMap();
headers.put(Exchange.HTTP_QUERY, "q=Camel&lr=lang_en");
// we query for Camel and English language at Google
template.sendBody("ahc:http://www.google.com/search", null, headers);
Map headers = new HashMap();
headers.put(Exchange.HTTP_QUERY, "q=Camel&lr=lang_en");
// we query for Camel and English language at Google
template.sendBody("ahc:http://www.google.com/search", null, headers);
在上面的标头值中,它不应 以 前缀为 ?,您可以像 & amp; char 一样分隔参数。
3.13.3. 获取响应代码 复制链接链接已复制到粘贴板!
您可以通过使用 Exchange.HTTP_RESPONSE_CODE 的 Out message 标头获取来自 AHC 组件的 HTTP 响应代码。
3.14. Configuring AsyncHttpClient 复制链接链接已复制到粘贴板!
AsyncHttpClient 客户端使用 AsyncHttpClientConfig 来配置客户端。如需了解更多详细信息,请参阅
Async Http Client 文档。
在 Camel 2.8 中,配置仅限于使用 AsyncHttpClientConfig.Builder 提供的构建器模式。在 Camel 2.8 中,AsyncHttpClientConfig 不支持 getters/setter,因此无法使用 Spring bean 风格(如 XML 文件中的 <bean> 标签)轻松创建/配置。
以下示例演示了如何使用构建程序来创建我们在 AhcComponent 上配置的 AsyncHttpClientConfig。
在 Camel 2.9 中,AHC 组件使用 Async HTTP 库 1.6.4。这个更新的版本添加了对普通 bean 风格的配置的支持。AsyncHttpClientConfigBean 类为 AsyncHttpClientConfig 中的配置选项提供 getters 和 setters。AsyncHttpClientConfigBean 实例可以直接传递到 AHC 组件,或使用 clientConfig URI 参数在端点 URI 中引用。
Camel 2.9 中还提供直接在 URI 中设置配置选项的功能。以 "clientConfig." 开头的 URI 参数可用于设置 AsyncHttpClientConfig 的各种可配置属性。端点 URI 中指定的属性与 "clientConfig" URI 参数引用的配置中指定的属性合并,使用 "clientConfig." 参数进行设置。引用的 AsyncHttpClientConfig 实例始终为每个端点复制,使得任何之前创建的端点上的设置将保持独立于任何之前创建的端点。以下示例演示了如何使用 "clientConfig." 类型 URI 参数来配置 AHC 组件。
from("direct:start")
.to("ahc:http://localhost:8080/foo?clientConfig.maxRequestRetry=3&clientConfig.followRedirects=true")
from("direct:start")
.to("ahc:http://localhost:8080/foo?clientConfig.maxRequestRetry=3&clientConfig.followRedirects=true")
3.15. SSL 支持(HTTPS) 复制链接链接已复制到粘贴板!
使用 JSSE 配置实用程序
从 Camel 2.9 开始,AHC 组件通过 Camel JSSE 配置实用程序 支持 SSL/TLS 配置。 这个实用程序可大大减少您需要编写的组件特定代码的数量,并在端点和组件级别进行配置。 以下示例演示了如何将 实用程序与 AHC 组件搭配使用。
组件的程序配置
基于 Spring DSL 端点配置
3.16. 另请参阅 复制链接链接已复制到粘贴板!
第 4 章 AHC Websocket 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.14 可用
ahc-ws 组件为通过 Websocket 与外部服务器通信的客户端提供基于 Websocket 的端点(作为打开与外部服务器的 websocket 连接的客户端)。
组件使用 AHC 组件,它使用了 Async Http Client 库。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
4.1. URI 格式 复制链接链接已复制到粘贴板!
ahc-ws://hostname[:port][/resourceUri][?options] ahc-wss://hostname[:port][/resourceUri][?options]
ahc-ws://hostname[:port][/resourceUri][?options]
ahc-wss://hostname[:port][/resourceUri][?options]
默认情况下,将端口 80 用于 ahc-wss,使用 443 作为 ahc-wss。
4.2. AHC-WS 选项 复制链接链接已复制到粘贴板!
由于 AHC-WS 组件基于 AHC 组件,您可以使用 AHC 组件的不同配置选项。
AHC Websocket 组件支持 8 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| client (advanced) | 使用自定义 AsyncHttpClient | AsyncHttpClient | |
| binding (advanced) | 使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。 | AhcBinding | |
| clientConfig (advanced) | 将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。 | AsyncHttpClientConfig | |
| sslContextParameters (security) | 引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。 | SSLContextParameters | |
| allowJavaSerialized Object (advanced) | 当请求使用 context-type=application/x-java-serialized-object (默认为 off)时,是否允许 java serialization。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| useGlobalSslContext Parameters (security) | 启用使用全局 SSL 上下文参数。 | false | 布尔值 |
| headerFilterStrategy (filter) | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。 | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AHC Websocket 端点使用 URI 语法配置:
ahc-ws:httpUri
ahc-ws:httpUri
使用以下路径和查询参数:
4.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| httpUri | 要使用的 URI,如 http://hostname:port/path | URI |
4.2.2. 查询参数(18 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| bridgeEndpoint (common) | 如果 选项为 true,则忽略 Exchange.HTTP_URI 标头,并使用端点的 URI 请求。您也可以将 throwExceptionOnFailure 设为 false,以便 AhcProducer 发送所有故障响应。 | false | 布尔值 |
| bufferSize (common) | 在 Camel 和 AHC 客户端之间传输数据时使用的初始内存缓冲大小。 | 4096 | int |
| headerFilterStrategy (common) | 使用自定义 HeaderFilterStrategy 过滤来自 Camel 消息的标头。 | HeaderFilterStrategy | |
| throwExceptionOnFailure (common) | 如果来自远程服务器的失败响应,禁用引发 AhcOperationFailedException 的选项。这可让您获得所有响应,无论 HTTP 状态代码如何。 | true | 布尔值 |
| transferException (common) | 如果启用并交换在消费者端的处理失败,如果导致的 Exception 在响应中作为 application/x-java-serialized-object 内容类型(例如,使用 Jetty 或 Servlet Camel 组件)发送了序列化处理。在制作者端,异常会按原样进行反序列化和引发,而不是 AhcOperationFailedException。导致的异常需要被序列化。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| sendMessageOnError (consumer) | 如果 web-socket 侦听器收到错误,是否发送一条消息。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| connectionClose (producer) | 定义是否需要将 Connection Close 标头添加到 HTTP Request 中。此参数默认为 false | false | 布尔值 |
| cookieHandler (producer) | 配置 Cookie 处理程序以维护 HTTP 会话 | CookieHandler | |
| useStreaming (producer) | 要启用流将数据作为多个文本片段发送。 | false | 布尔值 |
| binding (advanced) | 使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。 | AhcBinding | |
| clientConfig (advanced) | 将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。 | AsyncHttpClientConfig | |
| clientConfigOptions (advanced) | 使用 map 中的键/值配置 AsyncHttpClientConfig。 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| clientConfigRealmOptions (security) | 使用 map 中的 key/value 配置 AsyncHttpClientConfig Realm。 | map | |
| sslContextParameters (security) | 引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。这个引用会覆盖组件级别的任何配置的 SSLContextParameters。请参阅使用 JSSE 配置实用程序。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。 | SSLContextParameters |
4.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 9 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.ahc-ws.allow-java-serialized-object | 当请求使用 context-type=application/x-java-serialized-object (默认为 off)时,是否允许 java serialization。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| camel.component.ahc-ws.binding | 使用自定义 AhcBinding,它可以控制如何在 AHC 和 Camel 之间绑定。选项是一个 org.apache.camel.component.ahc.AhcBinding 类型。 | 字符串 | |
| camel.component.ahc-ws.client | 使用自定义 AsyncHttpClient。选项是 org.asynchttpclient.AsyncHttpClient 类型。 | 字符串 | |
| camel.component.ahc-ws.client-config | 将 AsyncHttpClient 配置为使用自定义 com.ning.http.client.AsyncHttpClientConfig 实例。选项是 org.asynchttpclient.AsyncHttpClientConfig 类型。 | 字符串 | |
| camel.component.ahc-ws.enabled | 启用 ahc-ws 组件 | true | 布尔值 |
| camel.component.ahc-ws.header-filter-strategy | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。选项是一个 org.apache.camel.spi.HeaderFilterStrategy 类型。 | 字符串 | |
| camel.component.ahc-ws.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.ahc-ws.ssl-context-parameters | 引用 registry 中的 org.apache.camel.util.jsse.SSLContextParameters。请注意,配置这个选项将覆盖通过端点或组件级别的 clientConfig 选项提供的任何 SSL/TLS 配置选项。选项是一个 org.apache.camel.util.jsse.SSLContextParameters 类型。 | 字符串 | |
| camel.component.ahc-ws.use-global-ssl-context-parameters | 启用使用全局 SSL 上下文参数。 | false | 布尔值 |
4.4. 通过 Websocket 编写和阅读数据 复制链接链接已复制到粘贴板!
ahc-ws 端点可以根据端点分别配置为制作者或消费者,将数据写入套接字或从套接字读取。
4.5. 配置 URI 以写入或读取数据 复制链接链接已复制到粘贴板!
在以下路由中,Camel 将写入指定的 websocket 连接。
from("direct:start")
.to("ahc-ws://targethost");
from("direct:start")
.to("ahc-ws://targethost");
以及对等的 Spring 示例:
在以下路由中,Camel 会从指定的 websocket 连接中读取。
from("ahc-ws://targethost")
.to("direct:next");
from("ahc-ws://targethost")
.to("direct:next");
以及对等的 Spring 示例:
4.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AHC
- Atmosphere-Websocket
第 5 章 AMQP 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 1.2 提供
amqp: 组件支持使用 Qpid 项目的 JMS 客户端 API 的 AMQP 1.0 协议。如果要使用 AMQP 0.9 (特别是 RabbitMQ 中),您可能还对 Camel RabbitMQ 组件感兴趣。请注意,在 Camel 2.17.0 AMQP 组件之前支持 AMQP 0.9 及更高版本,但从 Camel 2.17.0 开始,它只支持 AMQP 1.0。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-amqp</artifactId>
<version>${camel.version}</version> <!-- use the same version as your Camel core version -->
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-amqp</artifactId>
<version>${camel.version}</version> <!-- use the same version as your Camel core version -->
</dependency>
5.1. URI 格式 复制链接链接已复制到粘贴板!
amqp:[queue:|topic:]destinationName[?options]
amqp:[queue:|topic:]destinationName[?options]
5.2. AMQP 选项 复制链接链接已复制到粘贴板!
您可以在目的地名称后指定 JMS 组件的所有配置选项。
AMQP 组件支持下面列出的 81 选项。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | 使用共享的 JMS 配置 | JmsConfiguration | |
| acceptMessagesWhile Stopping (consumer) | 指定使用者接受消息在停止时是否指定。如果您在运行时启动和停止 JMS 路由,则请考虑启用这个选项,同时队列上仍有消息 enqueued。如果这个选项为 false,并且您停止了 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试重定位,但再次再次可能被拒绝,最后消息可能会在 JMS 代理上的死信队列移动。为了避免这一建议启用这个选项。 | false | 布尔值 |
| allowReplyManagerQuick Stop (consumer) | 如果 JmsConfiguration#isAcceptMessagesWhileStopping 在启用 JmsConfiguration#isAcceptMessagesWhileStopping 时,并且 org.apache.camel.Camel.CamelContext 当前已经停止。常规 JMS 用户默认启用这一快速停止功能,但为了回复经理,您必须启用此标志。 | false | 布尔值 |
| acknowledgementMode (consumer) | JMS 确认模式定义为 Integer。允许您将特定于供应商的扩展设置为 acknowledgment 模式。对于常规模式,最好使用 acknowledgementModeName。 | int | |
| eagerLoadingOf Properties (消费者) | 在加载消息时立即加载 JMS 属性,因为可能不需要 JMS 属性,但有时可能会遇到底层 JMS 提供程序及使用 JMS 属性的早期问题。 | false | 布尔值 |
| acknowledgementModeName (consumer) | JMS 确认名称之一: SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE | AUTO_ ACKNOWLEDGE | 字符串 |
| autoStartup (consumer) | 指定使用者容器是否应该自动启动。 | true | 布尔值 |
| cacheLevel (consumer) | 根据底层 JMS 资源的 ID 设置缓存级别。如需了解更多详细信息,请参阅 cacheLevelName 选项。 | int | |
| cacheLevelName (consumer) | 按照底层 JMS 资源的名称设置缓存级别。可能的值有:CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE 和 CACHE_SESSION。默认设置为 CACHE_AUTO。如需更多信息,请参阅 Spring 文档和事务缓存级别。 | CACHE_AUTO | 字符串 |
| replyToCacheLevelName (producer) | 在通过 JMS 进行请求/回复消费者时,按照名称设置缓存级别。这个选项只适用于使用固定的回复队列(而不是临时)。Camel 默认使用:CACHE_CONSUMER 用于独占或共享 w/ replyToSelectorName。以及在没有 replyToSelectorName 的情况下共享的 CACHE_SESSION。有些 JMS 代理(如 IBM WebSphere)可能需要设置 replyToCacheLevelName=CACHE_NONE 才能工作。注:如果使用临时队列,则不允许使用 CACHE_NONE,且必须使用更高的值,如 CACHE_CONSUMER 或 CACHE_SESSION。 | 字符串 | |
| clientId (common) | 设置要使用的 JMS 客户端 ID。请注意,这个值必须是唯一的,且只能供单个 JMS 连接实例使用。通常只有持久主题订阅才是必需的。如果使用 Apache ActiveMQ,您可以改为使用虚拟主题。 | 字符串 | |
| concurrentConsumers (consumer) | 指定使用 JMS 时的默认并发用户数(不用于请求/相对 JMS)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当执行请求/相对于 JMS 时,选项回复ToConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。 | 1 | int |
| replyToConcurrent Consumers (producer) | 指定在进行请求/相对于 JMS 时的默认并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | 1 | int |
| connectionFactory (common) | 要使用的连接工厂。必须在组件或端点上配置连接工厂。 | ConnectionFactory | |
| username (security) | 用于 ConnectionFactory 的用户名。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
| 密码 (安全) | 要用于 ConnectionFactory 的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
| deliveryPersistent (producer) | 指定是否默认使用持久交付。 | true | 布尔值 |
| deliveryMode (producer) | 指定要使用的交付模式。Possibles 值由 javax.jms.DeliveryMode 定义。NON_PERSISTENT = 1 和 PERSISTENT = 2. | 整数 | |
| durableSubscriptionName (common) | 指定持久主题订阅的持久订阅者名称。还必须配置 clientId 选项。 | 字符串 | |
| exceptionListener (advanced) | 指定任何底层 JMS 异常通知的 JMS Exception Listener。 | ExceptionListener | |
| errorHandler (advanced) | 指定在处理消息时出现任何意外异常时要调用的 org.springframework.util.ErrorHandler。默认情况下,如果没有配置错误处理程序,则这些异常会记录在 WARN 级别。您可以配置日志记录级别,以及是否应使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈追踪。这样可以更容易配置,而不是对自定义错误处理程序进行编码。 | ErrorHandler | |
| errorHandlerLogging Level (logging) | 允许配置默认错误处理程序日志记录级别,以记录异常。 | WARN | LoggingLevel |
| errorHandlerLogStack Trace (logging) | 允许控制是否应该记录堆栈追踪,默认错误处理程序。 | true | 布尔值 |
| explicitQosEnabled (producer) | 设定在发送消息时应使用 deliveryMode、priority 或 timeToLive 服务质量。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前的端点。这与 preserveMessageQos 选项不同,该选项以消息粒度运行,从 Camel In message 标头专门读取 QoS 属性。 | false | 布尔值 |
| exposeListenerSession (consumer) | 指定在消耗消息时是否应公开监听程序会话。 | false | 布尔值 |
| idleTaskExecutionLimit (advanced) | 指定接收任务的空闲执行的限制,没有在其执行过程中收到任何信息。如果达到这个限制,任务将关闭并离开其他执行任务(在出现动态调度的情况下),请参阅 maxConcurrentConsumers 设置。Spring 还有额外的文档。 | 1 | int |
| idleConsumerLimit (advanced) | 指定允许在任何给定时间闲置的用户数量的限制。 | 1 | int |
| maxConcurrentConsumers (consumer) | 指定来自 JMS 时的最大并发用户数(不用于请求/相对 JMS)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当执行请求/相对于 JMS 时,选项 replyToMaxConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。 | int | |
| replyToMaxConcurrent Consumers (producer) | 指定在 JMS 中使用请求/回复时的最大并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | int | |
| replyOnTimeoutToMax ConcurrentConsumers (producer) | 指定在使用 request/reply over JMS 时超时发生时持续路由的并发使用者的最大数量。 | 1 | int |
| maxMessagesPerTask (advanced) | 每个任务的消息数量。-1 代表无限。如果您为并发使用者使用范围(如 min max),则此选项可用于将值设置为 eg 100 来控制在不需要较少工作时消费者的快速程度。 | -1 | int |
| messageConverter (advanced) | 要使用自定义的 Spring org.springframework.jms.support.converter.MessageConverter,以便您可以控制如何映射到 javax.jms.Message。 | MessageConverter | |
| mapJmsMessage (advanced) | 指定 Camel 是否应将收到的 JMS 消息自动映射到合适的载荷类型,如 javax.jms.TextMessage 到字符串等。 | true | 布尔值 |
| messageIdEnabled (advanced) | 发送时,指定是否应添加消息 ID。这只是 JMS 代理的提示。如果 JMS 提供程序接受此提示,这些消息必须将消息 ID 设置为 null;如果提供商忽略 hint,消息 ID 必须设置为其正常的唯一值 | true | 布尔值 |
| messageTimestampEnabled (advanced) | 指定在发送消息时是否应默认启用时间戳。这只是一个到 JMS 代理的提示。如果 JMS 供应商接受这个 hint,这些消息必须将时间戳设置为零。如果供应商忽略了提示,时间戳必须设置为其正常值 | true | 布尔值 |
| alwaysCopyMessage (producer) | 如果为 true,则 Camel 将始终将消息的 JMS 消息副本传递给发送的制作者。在某些情况下,需要复制消息,例如当设置了 replyToDestinationSelectorName 时(通常,Camel 会将 alwaysCopyMessage 选项设置为 true,如设置了 replyToDestinationSelectorName) | false | 布尔值 |
| 使用MessageIDAs CorrelationID (advanced) | 指定 JMSMessageID 是否应该始终用作 InOut 消息的 JMSCorrelationID。 | false | 布尔值 |
| priority (producer) | 高于 1 的值在发送时指定消息优先级(其中 0 是最低优先级),以及 9 是最高优先级。还必须启用显式QosEnabled 选项,才能使此选项生效。 | 4 | int |
| pubSubNoLocal (advanced) | 指定是否禁止交付其自身连接发布的消息。 | false | 布尔值 |
| receiveTimeout (advanced) | 接收消息的超时时间(以毫秒为单位)。 | 1000 | long |
| recoveryInterval (advanced) | 指定恢复尝试之间的间隔,即当连接被刷新时(以毫秒为单位)。默认值为 5000 ms,即 5 秒。 | 5000 | long |
| taskExecutor (consumer) | 允许您指定自定义任务 executor 来使用消息。 | TaskExecutor | |
| deliveryDelay (producer) | 设置用于 JMS 的发送调用的交付延迟。这个选项需要 JMS 2.0 兼容代理。 | -1 | long |
| timeToLive (producer) | 发送消息时,指定消息的时间(以毫秒为单位)。 | -1 | long |
| transacted (transaction) | 指定是否使用翻译模式 | false | 布尔值 |
| lazyCreateTransaction Manager (transaction) | 如果为 true,如果选项 transacted=true 中没有注入事务管理器,Camel 会创建一个 JmsTransactionManager。 | true | 布尔值 |
| transactionManager (transaction) | 要使用的 Spring 事务管理器。 | platformTransaction Manager | |
| transactionName (transaction) | 要使用的事务的名称。 | 字符串 | |
| transactionTimeout (transaction) | 事务的超时值(以秒为单位)。 | -1 | int |
| testConnectionOn Startup (common) | 指定是否在启动时测试连接。这可确保当 Camel 启动时,所有 JMS 用户都具有与 JMS 代理的有效连接。如果无法授予连接,Camel 会在启动时抛出异常。这样可确保 Camel 没有启动失败的连接。JMS 生产商也进行了测试。 | false | 布尔值 |
| asyncStartListener (advanced) | 启动路由时是否异步启动 JmsConsumer 消息监听程序。例如,如果 JmsConsumer 无法连接到远程 JMS 代理,则在重试和/或故障转移时可能会阻止它。这将导致 Camel 在启动路由时阻止。通过将此选项设置为 true,您将让路由启动,而 JmsConsumer 使用一个专用线程以异步模式连接到 JMS 代理。如果使用这个选项,那么请注意,如果无法建立连接,则会在 WARN 级别记录异常,并且使用者将无法接收消息;然后,您可以重启要重试的路由。 | false | 布尔值 |
| asyncStopListener (advanced) | 在停止路由时,是否异步停止 JmsConsumer 消息监听程序。 | false | 布尔值 |
| forceSendOriginal Message (producer) | 在使用 mapJmsMessage=false Camel 时,如果您在路由期间接触标头(get 或 set)时,将创建一个新的 JMS 消息来发送到新的 JMS 目标。将这个选项设置为 true 以强制 Camel 发送收到的原始 JMS 消息。 | false | 布尔值 |
| requestTimeout (producer) | 在使用 InOut Exchange Pattern (以毫秒为单位)时等待回复的超时。默认值为 20 秒。您可以包含标头 CamelJmsRequestTimeout 来覆盖此端点配置的超时值,因此每个消息单独的超时值。另请参阅 requestTimeoutCheckerInterval 选项。 | 20000 | long |
| requestTimeoutChecker Interval (advanced) | 配置在通过 JMS 进行请求时,Camel 应该检查超时交换的频率。默认情况下,Camel 会检查每秒一次。但是,如果发生超时时您必须更快地做出反应,那么您可以降低这个间隔,以更频繁地检查。超时由选项 requestTimeout 决定。 | 1000 | long |
| transferExchange (advanced) | 您可以通过线路传输交换,而不只是正文和标头。传输以下字段如下:正文、出站正文、容错正文、入口、出口标头、容错标头、交换属性、交换异常。这要求对象是序列化的。Camel 将排除任何非序列化对象,并在 WARN 级别记录它。您必须在制作者和消费者端启用此选项,因此 Camel 知道有效负载是 Exchange,而非常规有效负载。 | false | 布尔值 |
| transferException (高级) | 如果启用并且您正在使用 Request Reply messaging (InOut),并且一个 Exchange 在使用者端失败,则会导致 Exception 发回为 javax.jms.ObjectMessage。如果客户端是 Camel,则返回的 Exception 会被重新箭头。这样,您可以使用 Camel JMS 作为路由中的网桥 - 例如,使用持久性队列来启用可靠的路由。请注意,如果您也启用了 transferExchange,则此选项将具有优先权。请注意的异常需要是序列化的。使用者端的原始例外可以包装在外部异常中,如 org.apache.camel.RuntimeCamelException (返回到制作者)。 | false | 布尔值 |
| transferFault (advanced) | 如果启用且您使用 Request Reply messaging (InOut)和 Exchange failed,在消费者端使用 SOAP 故障(而非例外),则 Message#isFault ()上的故障标记将重新发送作为带有键 org.apache.camelcomponent.jms.JmsConstants#JMS_TRATRATRATRATER_JMS_TRATER_JMS 头条的 JMS 标头。如果客户端是 Camel,则返回的 fault 标志将在 org.apache.camel.Message#setFault (布尔值)上设置。在使用支持故障的 Camel 组件(如 cxf 或 spring-ws)时,您可能需要启用此功能。 | false | 布尔值 |
| jmsOperations (advanced) | 允许您使用自己实施 org.springframework.jms.core.JmsOperations 接口。Camel 使用 JmsTemplate 作为默认值。可用于测试目的,但不如 spring API 文档中所述。 | JmsOperations | |
| destinationResolver (advanced) | 可插拔 org.springframework.jms.support.destination.DestinationResolver,允许您使用自己的解析器(例如,在 JNDI 注册表中查找真实目的地)。 | DestinationResolver | |
| replyToType (producer) | 允许显式指定在进行请求/恢复 JMS 时用于回复队列的策略。可能的值有:Trimporary、Shared 或 Exclusive。默认情况下,Camel 将使用临时队列。但是,如果已经配置了 replyTo,则默认使用 Shared。此选项允许您使用专用队列而不是共享队列。请参阅 Camel JMS 文档了解更多详情,特别是有关在集群环境中运行时所造成影响的备注,以及共享回复队列的性能比其 alternatives Temporary 和 Exclusive 的性能有不同。 | ReplyToType | |
| preserveMessageQos (producer) | 设置为 true,如果要使用消息中指定的 QoS 设置发送消息,而不是 JMS 端点上的 QoS 设置。以下三个标头被视为 JMSPriority、JMSDeliveryMode 和 JMSExpiration。您可以提供全部或部分功能。如果没有提供,Camel 将回退为使用来自端点的值。因此,在使用这个选项时,标头会覆盖端点中的值。相反,显式QosEnabled 选项只会使用在端点上设置的选项,而不是消息标头中的值。 | false | 布尔值 |
| asyncConsumer (consumer) | JmsConsumer 是否异步处理 Exchange。如果启用,则 JmsConsumer 可能会从 JMS 队列获取下一个消息,而上一消息正在异步处理(通过异步路由引擎)。这意味着,消息可以被严格处理,按顺序处理。如果禁用(默认),则在 JmsConsumer 将从 JMS 队列中获取下一个消息之前,将完全处理 Exchange。请注意,如果已启用翻译,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 可能支持 async 事务)。 | false | 布尔值 |
| allowNullBody (producer) | 是否允许在没有正文的情况下发送消息。如果此选项为 false,并且消息正文为空,则将引发 JMSException。 | true | 布尔值 |
| includeSentJMS MessageID (producer) | 仅适用于使用 InOnly 发送到 JMS 目的地(请触发和忘记)。启用此选项将丰富的 Camel Exchange 与 JMS 客户端在消息发送到 JMS 目的地时使用的实际 JMSMessageID 一起丰富。 | false | 布尔值 |
| includeAllJMSX Properties (advanced) | 从 JMS 到 Camel 消息映射时是否包括所有 JMSXxxx 属性。将其设置为 true 将包括 JMSXAppID 和 JMSXUserID 等属性。注:如果您使用自定义 headerFilterStrategy,则这个选项不会应用。 | false | 布尔值 |
| 默认TaskExecutor Type (使用者) | 指定在 DefaultMessageListenerContainer 中使用哪些默认 TaskExecutor 类型,用于使用者端点和制作者端点的 ReplyTo consumer。可能的值有: SimpleAsync (使用 Spring 的 SimpleAsyncTaskExecutor)或 ThreadPool (使用具有最优值的 Spring 的 ThreadPoolTaskExecutor)。如果没有设置,则默认为之前的行为,它将缓存的线程池用于消费者端点和 SimpleAsync 回复消费者消费者。建议使用 ThreadPool 以减少弹性配置中的线程回收,并动态增加和减少并发用户。 | DefaultTaskExecutor Type | |
| jmsKeyFormatStrategy (advanced) | 用于编码和解码 JMS 密钥的可插拔策略,以便它们符合 JMS 规范。Camel 提供了两个开箱即用的实现:默认和直通。默认策略将安全汇总点和连字符(. 和 -)。passthrough 策略会保留密钥,即:可用于不小心 JMS 标头键是否包含非法字符的 JMS 代理。您可以自行实施 org.apache.camel.component.jms.JmsKeyFormatStrategy,并使用 # 表示法引用它。 | JmsKeyFormatStrategy | |
| allowAdditionalHeaders (producer) | 此选项用于允许可能具有根据 JMS 规格无效的值的额外标头。例如,一些消息系统(如 WMQ)使用前缀 JMS_IBM_MQMD_(包含字节阵列或其他无效类型的值)使用标头名称来执行此操作。您可以用逗号分隔的多个标头名称,并用作通配符匹配后缀。 | 字符串 | |
| queueBrowseStrategy (advanced) | 在浏览队列时使用自定义 QueueBrowseStrategy | QueueBrowseStrategy | |
| messageCreatedStrategy (advanced) | 要使用给定的 MessageCreatedStrategy,在 Camel 发送 JMS 消息时,将在 Camel 创建新实例 javax.jms.Message 对象时来调用。 | MessageCreatedStrategy | |
| waitForProvision CorrelationToBeUpdated Counter (advanced) | 在对 JMS 进行请求/恢复请求时,等待 provisional 关联 id 会被更新为实际关联 id 的次数,以及选项 useMessageIDAsCorrelationID。 | 50 | int |
| waitForProvision CorrelationToBeUpdated ThreadSleepingTime (advanced) | millis 在等待 provisional correlation id 被更新期间,每次处于睡眠状态的时间间隔。 | 100 | long |
| correlationProperty (producer) | 使用此 JMS 属性将消息与 InOut Exchange 模式(request-reply)而不是 JMSCorrelationID 属性关联。这样,您可以使用 JMSCorrelationID JMS 属性将消息与不关联消息的系统交换。如果未使用 JMSCorrelationID,则 Camel 将不会被使用或设置。如果未在同一名称下的消息标题中提供,则生成此指定属性的值。 | 字符串 | |
| subscriptionDurable (consumer) | 设置是否使订阅持久。要使用的持久订阅名称可以通过 subscriptionName 属性指定。默认为 false。将其设置为 true 以注册持久的订阅,通常与 subscriptionName 值结合使用(除非您的消息监听器类名称足够好作为订阅名称)。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。 | false | 布尔值 |
| subscriptionShared (consumer) | 设置是否使订阅共享。可以通过 subscriptionName 属性指定要使用的共享订阅名称。默认为 false。将其设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称已足够符合订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以(并经常将)与订阅相整合。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。需要 JMS 2.0 兼容消息代理。 | false | 布尔值 |
| subscriptionName (consumer) | 设置要创建的订阅的名称。要应用一个带有共享或 durable 订阅的主题(pub-sub 域)。订阅名称需要在这个客户端的 JMS 客户端 ID 中唯一。default 是指定消息监听程序的类名称。注:每个订阅只允许 1 个并发使用者(默认是此消息监听器容器),但共享订阅除外(需要 JMS 2.0)。 | 字符串 | |
| streamMessageType Enabled (producer) | 设定是否启用 StreamMessage 类型。消息有效负载的流传输类型(如文件、InputStream 等)将作为 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪一种类型。默认情况下使用 BytesMessage,它强制读取到内存中的完整消息有效负载。通过启用此选项,消息有效负载在块中读取到内存中,每个块都会写入 StreamMessage,直到没有更多数据。 | false | 布尔值 |
| formatDateHeadersTo Iso8601 (producer) | 设置日期标头是否应该根据 ISO 8601 标准进行格式化。 | false | 布尔值 |
| headerFilterStrategy (filter) | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。 | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AMQP 端点使用 URI 语法配置:
amqp:destinationType:destinationName
amqp:destinationType:destinationName
使用以下路径和查询参数:
5.2.1. 路径名(2 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| destinationType | 要使用的目的地种类 | 队列 | 字符串 |
| destinationName | 用作目的地的队列或主题 所需的 名称 | 字符串 |
5.2.2. 查询参数(92 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| clientId (common) | 设置要使用的 JMS 客户端 ID。请注意,这个值必须是唯一的,且只能供单个 JMS 连接实例使用。通常只有持久主题订阅才是必需的。如果使用 Apache ActiveMQ,您可以改为使用虚拟主题。 | 字符串 | |
| connectionFactory (common) | 要使用的连接工厂。必须在组件或端点上配置连接工厂。 | ConnectionFactory | |
| disableReplyTo (common) | 指定 Camel 是否忽略消息中的 JMSReplyTo 标头。如果为 true,Camel 不会向 JMSReplyTo 标头中指定的目标发送回复。如果您希望 Camel 从路由消耗,且您不希望 Camel 自动发送回复消息,因为代码中的其他组件会处理回复消息。如果要使用 Camel 作为不同消息代理间的代理,并希望从一个系统路由到另一个系统,也可以使用这个选项。 | false | 布尔值 |
| durableSubscriptionName (common) | 指定持久主题订阅的持久订阅者名称。还必须配置 clientId 选项。 | 字符串 | |
| jmsMessageType (common) | 允许您强制使用特定的 javax.jms.Message 实施来发送 JMS 消息。可能的值有:Bytes, Map, Object, Stream, Text。默认情况下,Camel 将决定要从 In body 类型中使用的 JMS 消息类型。此选项允许您指定它。 | JmsMessageType | |
| testConnectionOnStartup (common) | 指定是否在启动时测试连接。这可确保当 Camel 启动时,所有 JMS 用户都具有与 JMS 代理的有效连接。如果无法授予连接,Camel 会在启动时抛出异常。这样可确保 Camel 没有启动失败的连接。JMS 生产商也进行了测试。 | false | 布尔值 |
| acknowledgementModeName (consumer) | JMS 确认名称之一: SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE | AUTO_ ACKNOWLEDGE | 字符串 |
| asyncConsumer (consumer) | JmsConsumer 是否异步处理 Exchange。如果启用,则 JmsConsumer 可能会从 JMS 队列获取下一个消息,而上一消息正在异步处理(通过异步路由引擎)。这意味着,消息可以被严格处理,按顺序处理。如果禁用(默认),则在 JmsConsumer 将从 JMS 队列中获取下一个消息之前,将完全处理 Exchange。请注意,如果已启用翻译,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 可能支持 async 事务)。 | false | 布尔值 |
| autoStartup (consumer) | 指定使用者容器是否应该自动启动。 | true | 布尔值 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| cacheLevel (consumer) | 根据底层 JMS 资源的 ID 设置缓存级别。如需了解更多详细信息,请参阅 cacheLevelName 选项。 | int | |
| cacheLevelName (consumer) | 按照底层 JMS 资源的名称设置缓存级别。可能的值有:CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE 和 CACHE_SESSION。默认设置为 CACHE_AUTO。如需更多信息,请参阅 Spring 文档和事务缓存级别。 | CACHE_AUTO | 字符串 |
| concurrentConsumers (consumer) | 指定使用 JMS 时的默认并发用户数(不用于请求/相对 JMS)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当执行请求/相对于 JMS 时,选项回复ToConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。 | 1 | int |
| maxConcurrentConsumers (consumer) | 指定来自 JMS 时的最大并发用户数(不用于请求/相对 JMS)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当执行请求/相对于 JMS 时,选项 replyToMaxConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。 | int | |
| replyTo (consumer) | 提供显式 ReplyTo 目标,可覆盖 Message.getJMSReplyTo ()的任何传入值。 | 字符串 | |
| replyToDeliveryPersistent (consumer) | 指定是否默认将持久发送用于回复。 | true | 布尔值 |
| selector (consumer) | 设置要使用的 JMS 选择器 | 字符串 | |
| subscriptionDurable (consumer) | 设置是否使订阅持久。要使用的持久订阅名称可以通过 subscriptionName 属性指定。默认为 false。将其设置为 true 以注册持久的订阅,通常与 subscriptionName 值结合使用(除非您的消息监听器类名称足够好作为订阅名称)。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。 | false | 布尔值 |
| subscriptionName (consumer) | 设置要创建的订阅的名称。要应用一个带有共享或 durable 订阅的主题(pub-sub 域)。订阅名称需要在这个客户端的 JMS 客户端 ID 中唯一。default 是指定消息监听程序的类名称。注:每个订阅只允许 1 个并发使用者(默认是此消息监听器容器),但共享订阅除外(需要 JMS 2.0)。 | 字符串 | |
| subscriptionShared (consumer) | 设置是否使订阅共享。可以通过 subscriptionName 属性指定要使用的共享订阅名称。默认为 false。将其设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称已足够符合订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以(并经常将)与订阅相整合。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。需要 JMS 2.0 兼容消息代理。 | false | 布尔值 |
| acceptMessagesWhileStopping (consumer) | 指定使用者接受消息在停止时是否指定。如果您在运行时启动和停止 JMS 路由,则请考虑启用这个选项,同时队列上仍有消息 enqueued。如果这个选项为 false,并且您停止了 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试重定位,但再次再次可能被拒绝,最后消息可能会在 JMS 代理上的死信队列移动。为了避免这一建议启用这个选项。 | false | 布尔值 |
| allowReplyManagerQuickStop (consumer) | 如果 JmsConfiguration#isAcceptMessagesWhileStopping 在启用 JmsConfiguration#isAcceptMessagesWhileStopping 时,并且 org.apache.camel.Camel.CamelContext 当前已经停止。常规 JMS 用户默认启用这一快速停止功能,但为了回复经理,您必须启用此标志。 | false | 布尔值 |
| consumerType (consumer) | 要使用的使用者类型,可以是:简单、默认或 Custom。使用者类型决定要使用的 Spring JMS 侦听器。默认情况下,将使用 org.springframework.jms.listener.DefaultMessageListenerContainer,SimpleMessageListenerContainer 将使用 org.springframework.jms.listener.SimpleMessageListenerContainer。指定 Custom 时,由 messageListenerContainerFactory 选项定义的 MessageListenerContainerFactory 将决定要使用的 org.springframework.jms.listener.AbstractMessageListenerContainer。 | 默认 | ConsumerType |
| defaultTaskExecutorType (consumer) | 指定在 DefaultMessageListenerContainer 中使用哪些默认 TaskExecutor 类型,用于使用者端点和制作者端点的 ReplyTo consumer。可能的值有: SimpleAsync (使用 Spring 的 SimpleAsyncTaskExecutor)或 ThreadPool (使用具有最优值的 Spring 的 ThreadPoolTaskExecutor)。如果没有设置,则默认为之前的行为,它将缓存的线程池用于消费者端点和 SimpleAsync 回复消费者消费者。建议使用 ThreadPool 以减少弹性配置中的线程回收,并动态增加和减少并发用户。 | DefaultTaskExecutor Type | |
| eagerLoadingOfProperties (consumer) | 在加载消息时立即加载 JMS 属性和有效负载,这通常不需要 JMS 属性,但有时可能会遇到底层 JMS 提供程序的问题以及 JMS 属性的使用。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| exposeListenerSession (consumer) | 指定在消耗消息时是否应公开监听程序会话。 | false | 布尔值 |
| replyToSameDestination Allowed (consumer) | JMS 使用者是否允许回复消息到消费者用于使用的同一目的地。这可防止消耗和将相同的消息发回到自身来防止死循环。 | false | 布尔值 |
| taskExecutor (consumer) | 允许您指定自定义任务 executor 来使用消息。 | TaskExecutor | |
| deliveryDelay (producer) | 设置用于 JMS 的发送调用的交付延迟。这个选项需要 JMS 2.0 兼容代理。 | -1 | long |
| deliveryMode (producer) | 指定要使用的交付模式。Possibles 值由 javax.jms.DeliveryMode 定义。NON_PERSISTENT = 1 和 PERSISTENT = 2. | 整数 | |
| deliveryPersistent (producer) | 指定是否默认使用持久交付。 | true | 布尔值 |
| explicitQosEnabled (producer) | 设定在发送消息时应使用 deliveryMode、priority 或 timeToLive 服务质量。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前的端点。这与 preserveMessageQos 选项不同,该选项以消息粒度运行,从 Camel In message 标头专门读取 QoS 属性。 | false | 布尔值 |
| formatDateHeadersToIso8601 (producer) | 设置 JMS date 属性是否应该根据 ISO 8601 标准进行格式化。 | false | 布尔值 |
| preserveMessageQos (producer) | 设置为 true,如果要使用消息中指定的 QoS 设置发送消息,而不是 JMS 端点上的 QoS 设置。以下三个标头被视为 JMSPriority、JMSDeliveryMode 和 JMSExpiration。您可以提供全部或部分功能。如果没有提供,Camel 将回退为使用来自端点的值。因此,在使用这个选项时,标头会覆盖端点中的值。相反,显式QosEnabled 选项只会使用在端点上设置的选项,而不是消息标头中的值。 | false | 布尔值 |
| priority (producer) | 高于 1 的值在发送时指定消息优先级(其中 0 是最低优先级),以及 9 是最高优先级。还必须启用显式QosEnabled 选项,才能使此选项生效。 | 4 | int |
| replyToConcurrentConsumers (producer) | 指定在进行请求/相对于 JMS 时的默认并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | 1 | int |
| replyToMaxConcurrent Consumers (producer) | 指定在 JMS 中使用请求/回复时的最大并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | int | |
| replyToOnTimeoutMax ConcurrentConsumers (producer) | 指定在使用 request/reply over JMS 时超时发生时持续路由的并发使用者的最大数量。 | 1 | int |
| replyToOverride (producer) | 在 JMS 消息中提供显式 ReplyTo 目标,可覆盖回复商的设置。如果要将消息转发到远程队列并接收来自 ReplyTo 目的地的回复消息,这很有用。 | 字符串 | |
| replyToType (producer) | 允许显式指定在进行请求/恢复 JMS 时用于回复队列的策略。可能的值有:Trimporary、Shared 或 Exclusive。默认情况下,Camel 将使用临时队列。但是,如果已经配置了 replyTo,则默认使用 Shared。此选项允许您使用专用队列而不是共享队列。请参阅 Camel JMS 文档了解更多详情,特别是有关在集群环境中运行时所造成影响的备注,以及共享回复队列的性能比其 alternatives Temporary 和 Exclusive 的性能有不同。 | ReplyToType | |
| requestTimeout (producer) | 在使用 InOut Exchange Pattern (以毫秒为单位)时等待回复的超时。默认值为 20 秒。您可以包含标头 CamelJmsRequestTimeout 来覆盖此端点配置的超时值,因此每个消息单独的超时值。另请参阅 requestTimeoutCheckerInterval 选项。 | 20000 | long |
| timeToLive (producer) | 发送消息时,指定消息的时间(以毫秒为单位)。 | -1 | long |
| allowAdditionalHeaders (producer) | 此选项用于允许可能具有根据 JMS 规格无效的值的额外标头。例如,一些消息系统(如 WMQ)使用前缀 JMS_IBM_MQMD_(包含字节阵列或其他无效类型的值)使用标头名称来执行此操作。您可以用逗号分隔的多个标头名称,并用作通配符匹配后缀。 | 字符串 | |
| allowNullBody (producer) | 是否允许在没有正文的情况下发送消息。如果此选项为 false,并且消息正文为空,则将引发 JMSException。 | true | 布尔值 |
| alwaysCopyMessage (producer) | 如果为 true,则 Camel 将始终将消息的 JMS 消息副本传递给发送的制作者。在某些情况下,需要复制消息,例如当设置了 replyToDestinationSelectorName 时(通常,Camel 会将 alwaysCopyMessage 选项设置为 true,如设置了 replyToDestinationSelectorName) | false | 布尔值 |
| correlationProperty (producer) | 使用 InOut Exchange 模式使用此 JMS 属性而不是 JMSCorrelationID JMS 属性来关联消息。如果设置消息将被仅与此属性 JMSCorrelationID 属性的值关联,则 Camel 不会设置。 | 字符串 | |
| disableTimeToLive (producer) | 使用这个选项强制禁用时间实时。例如,当您通过 JMS 进行请求/推荐时,Camel 默认将使用 requestTimeout 值作为正在发送的消息上的实时。问题是发送者和接收器系统必须同步其时钟,因此它们正在同步。这不是始终如此容易的归档。因此,您可以使用 disableTimeToLive=true 将发送消息中的时间设置为 live 值。然后,信息不会在接收方系统中过期。如需了解更多详细信息,请参阅关于时间至 live 的部分。 | false | 布尔值 |
| forceSendOriginalMessage (producer) | 在使用 mapJmsMessage=false Camel 时,如果您在路由期间接触标头(get 或 set)时,将创建一个新的 JMS 消息来发送到新的 JMS 目标。将这个选项设置为 true 以强制 Camel 发送收到的原始 JMS 消息。 | false | 布尔值 |
| includeSentJMSMessageID (producer) | 仅适用于使用 InOnly 发送到 JMS 目的地(请触发和忘记)。启用此选项将丰富的 Camel Exchange 与 JMS 客户端在消息发送到 JMS 目的地时使用的实际 JMSMessageID 一起丰富。 | false | 布尔值 |
| replyToCacheLevelName (producer) | 在通过 JMS 进行请求/回复消费者时,按照名称设置缓存级别。这个选项只适用于使用固定的回复队列(而不是临时)。Camel 默认使用:CACHE_CONSUMER 用于独占或共享 w/ replyToSelectorName。以及在没有 replyToSelectorName 的情况下共享的 CACHE_SESSION。有些 JMS 代理(如 IBM WebSphere)可能需要设置 replyToCacheLevelName=CACHE_NONE 才能工作。注:如果使用临时队列,则不允许使用 CACHE_NONE,且必须使用更高的值,如 CACHE_CONSUMER 或 CACHE_SESSION。 | 字符串 | |
| replyToDestinationSelector Name (producer) | 使用固定名称来设置 JMS Selector,以便在使用共享队列时过滤您自己的回复(也就是说,如果您不使用临时回复队列)。 | 字符串 | |
| streamMessageTypeEnabled (producer) | 设定是否启用 StreamMessage 类型。消息有效负载的流传输类型(如文件、InputStream 等)将作为 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪一种类型。默认情况下使用 BytesMessage,它强制读取到内存中的完整消息有效负载。通过启用此选项,消息有效负载在块中读取到内存中,每个块都会写入 StreamMessage,直到没有更多数据。 | false | 布尔值 |
| allowSerializedHeaders (advanced) | 控制是否包含序列化标头。仅在 transferExchange 为 true 时才适用。这要求对象是序列化的。Camel 将排除任何非序列化对象,并在 WARN 级别记录它。 | false | 布尔值 |
| asyncStartListener (advanced) | 启动路由时是否异步启动 JmsConsumer 消息监听程序。例如,如果 JmsConsumer 无法连接到远程 JMS 代理,则在重试和/或故障转移时可能会阻止它。这将导致 Camel 在启动路由时阻止。通过将此选项设置为 true,您将让路由启动,而 JmsConsumer 使用一个专用线程以异步模式连接到 JMS 代理。如果使用这个选项,那么请注意,如果无法建立连接,则会在 WARN 级别记录异常,并且使用者将无法接收消息;然后,您可以重启要重试的路由。 | false | 布尔值 |
| asyncStopListener (advanced) | 在停止路由时,是否异步停止 JmsConsumer 消息监听程序。 | false | 布尔值 |
| destinationResolver (advanced) | 可插拔 org.springframework.jms.support.destination.DestinationResolver,允许您使用自己的解析器(例如,在 JNDI 注册表中查找真实目的地)。 | DestinationResolver | |
| errorHandler (advanced) | 指定在处理消息时出现任何意外异常时要调用的 org.springframework.util.ErrorHandler。默认情况下,如果没有配置错误处理程序,则这些异常会记录在 WARN 级别。您可以配置日志记录级别,以及是否应使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈追踪。这样可以更容易配置,而不是对自定义错误处理程序进行编码。 | ErrorHandler | |
| exceptionListener (advanced) | 指定任何底层 JMS 异常通知的 JMS Exception Listener。 | ExceptionListener | |
| headerFilterStrategy (advanced) | 使用自定义 HeaderFilterStrategy 过滤来自 Camel 消息的标头。 | HeaderFilterStrategy | |
| idleConsumerLimit (advanced) | 指定允许在任何给定时间闲置的用户数量的限制。 | 1 | int |
| idleTaskExecutionLimit (advanced) | 指定接收任务的空闲执行的限制,没有在其执行过程中收到任何信息。如果达到这个限制,任务将关闭并离开其他执行任务(在出现动态调度的情况下),请参阅 maxConcurrentConsumers 设置。Spring 还有额外的文档。 | 1 | int |
| includeAllJMSXProperties (advanced) | 从 JMS 到 Camel 消息映射时是否包括所有 JMSXxxx 属性。将其设置为 true 将包括 JMSXAppID 和 JMSXUserID 等属性。注:如果您使用自定义 headerFilterStrategy,则这个选项不会应用。 | false | 布尔值 |
| jmsKeyFormatStrategy (advanced) | 用于编码和解码 JMS 密钥的可插拔策略,以便它们符合 JMS 规范。Camel 提供了两个开箱即用的实现:默认和直通。默认策略将安全汇总点和连字符(. 和 -)。passthrough 策略会保留密钥,即:可用于不小心 JMS 标头键是否包含非法字符的 JMS 代理。您可以自行实施 org.apache.camel.component.jms.JmsKeyFormatStrategy,并使用 # 表示法引用它。 | 字符串 | |
| mapJmsMessage (advanced) | 指定 Camel 是否应将收到的 JMS 消息自动映射到合适的载荷类型,如 javax.jms.TextMessage 到字符串等。 | true | 布尔值 |
| maxMessagesPerTask (advanced) | 每个任务的消息数量。-1 代表无限。如果您为并发使用者使用范围(如 min max),则此选项可用于将值设置为 eg 100 来控制在不需要较少工作时消费者的快速程度。 | -1 | int |
| messageConverter (advanced) | 要使用自定义的 Spring org.springframework.jms.support.converter.MessageConverter,以便您可以控制如何映射到 javax.jms.Message。 | MessageConverter | |
| messageCreatedStrategy (advanced) | 要使用给定的 MessageCreatedStrategy,在 Camel 发送 JMS 消息时,将在 Camel 创建新实例 javax.jms.Message 对象时来调用。 | MessageCreatedStrategy | |
| messageIdEnabled (advanced) | 发送时,指定是否应添加消息 ID。这只是 JMS 代理的提示。如果 JMS 提供程序接受此提示,这些消息必须将消息 ID 设置为 null;如果提供商忽略 hint,消息 ID 必须设置为其正常的唯一值 | true | 布尔值 |
| messageListenerContainer Factory (advanced) | 用于决定要消耗消息的 org.springframework.jms.listener.AbstractMessageListenerContainer 的 registry ID。设置此设置将自动将 consumerType 设置为 Custom。 | MessageListener ContainerFactory | |
| messageTimestampEnabled (advanced) | 指定在发送消息时是否应默认启用时间戳。这只是一个到 JMS 代理的提示。如果 JMS 供应商接受这个 hint,这些消息必须将时间戳设置为零。如果供应商忽略了提示,时间戳必须设置为其正常值 | true | 布尔值 |
| pubSubNoLocal (advanced) | 指定是否禁止交付其自身连接发布的消息。 | false | 布尔值 |
| receiveTimeout (advanced) | 接收消息的超时时间(以毫秒为单位)。 | 1000 | long |
| recoveryInterval (advanced) | 指定恢复尝试之间的间隔,即当连接被刷新时(以毫秒为单位)。默认值为 5000 ms,即 5 秒。 | 5000 | long |
| requestTimeoutChecker Interval (advanced) | 配置在通过 JMS 进行请求时,Camel 应该检查超时交换的频率。默认情况下,Camel 会检查每秒一次。但是,如果发生超时时您必须更快地做出反应,那么您可以降低这个间隔,以更频繁地检查。超时由选项 requestTimeout 决定。 | 1000 | long |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| transferException (高级) | 如果启用并且您正在使用 Request Reply messaging (InOut),并且一个 Exchange 在使用者端失败,则会导致 Exception 发回为 javax.jms.ObjectMessage。如果客户端是 Camel,则返回的 Exception 会被重新箭头。这样,您可以使用 Camel JMS 作为路由中的网桥 - 例如,使用持久性队列来启用可靠的路由。请注意,如果您也启用了 transferExchange,则此选项将具有优先权。请注意的异常需要是序列化的。使用者端的原始例外可以包装在外部异常中,如 org.apache.camel.RuntimeCamelException (返回到制作者)。 | false | 布尔值 |
| transferExchange (advanced) | 您可以通过线路传输交换,而不只是正文和标头。传输以下字段如下:正文、出站正文、容错正文、入口、出口标头、容错标头、交换属性、交换异常。这要求对象是序列化的。Camel 将排除任何非序列化对象,并在 WARN 级别记录它。您必须在制作者和消费者端启用此选项,因此 Camel 知道有效负载是 Exchange,而非常规有效负载。 | false | 布尔值 |
| transferFault (advanced) | 如果启用且您使用 Request Reply messaging (InOut)和 Exchange failed,在消费者端使用 SOAP 故障(而非例外),则 Message#isFault ()上的故障标记将重新发送作为带有键 org.apache.camelcomponent.jms.JmsConstants#JMS_TRATRATRATRATER_JMS_TRATER_JMS 头条的 JMS 标头。如果客户端是 Camel,则返回的 fault 标志将在 org.apache.camel.Message#setFault (布尔值)上设置。在使用支持故障的 Camel 组件(如 cxf 或 spring-ws)时,您可能需要启用此功能。 | false | 布尔值 |
| useMessageIDAsCorrelation ID (advanced) | 指定 JMSMessageID 是否应该始终用作 InOut 消息的 JMSCorrelationID。 | false | 布尔值 |
| waitForProvisionCorrelation ToBeUpdatedCounter (advanced) | 在对 JMS 进行请求/恢复请求时,等待 provisional 关联 id 会被更新为实际关联 id 的次数,以及选项 useMessageIDAsCorrelationID。 | 50 | int |
| waitForProvisionCorrelation ToBeUpdatedThreadSleeping Time (advanced) | millis 在等待 provisional correlation id 被更新期间,每次处于睡眠状态的时间间隔。 | 100 | long |
| errorHandlerLoggingLevel (logging) | 允许配置默认错误处理程序日志记录级别,以记录异常。 | WARN | LoggingLevel |
| errorHandlerLogStackTrace (logging) | 允许控制是否应该记录堆栈追踪,默认错误处理程序。 | true | 布尔值 |
| 密码 (安全) | 要用于 ConnectionFactory 的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
| username (security) | 用于 ConnectionFactory 的用户名。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
| transacted (transaction) | 指定是否使用翻译模式 | false | 布尔值 |
| lazyCreateTransaction Manager (transaction) | 如果为 true,如果选项 transacted=true 中没有注入事务管理器,Camel 会创建一个 JmsTransactionManager。 | true | 布尔值 |
| transactionManager (transaction) | 要使用的 Spring 事务管理器。 | platformTransaction Manager | |
| transactionName (transaction) | 要使用的事务的名称。 | 字符串 | |
| transactionTimeout (transaction) | 事务的超时值(以秒为单位)。 | -1 | int |
5.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 81 选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.amqp.accept-messages-while-stopping | 指定使用者接受消息在停止时是否指定。如果您在运行时启动和停止 JMS 路由,则请考虑启用这个选项,同时队列上仍有消息 enqueued。如果这个选项为 false,并且您停止了 JMS 路由,则消息可能会被拒绝,并且 JMS 代理必须尝试重定位,但再次再次可能被拒绝,最后消息可能会在 JMS 代理上的死信队列移动。为了避免这一建议启用这个选项。 | false | 布尔值 |
| camel.component.amqp.acknowledgement-mode | JMS 确认模式定义为 Integer。允许您将特定于供应商的扩展设置为 acknowledgment 模式。对于常规模式,最好使用 acknowledgementModeName。 | 整数 | |
| camel.component.amqp.acknowledgement-mode-name | JMS 确认名称之一: SESSION_TRANSACTED、CLIENT_ACKNOWLEDGE、AUTO_ACKNOWLEDGE、DUPS_OK_ACKNOWLEDGE | AUTO_ ACKNOWLEDGE | 字符串 |
| camel.component.amqp.allow-additional-headers | 此选项用于允许可能具有根据 JMS 规格无效的值的额外标头。例如,一些消息系统(如 WMQ)使用前缀 JMS_IBM_MQMD_(包含字节阵列或其他无效类型的值)使用标头名称来执行此操作。您可以用逗号分隔的多个标头名称,并用作通配符匹配后缀。 | 字符串 | |
| camel.component.amqp.allow-null-body | 是否允许在没有正文的情况下发送消息。如果此选项为 false,并且消息正文为空,则将引发 JMSException。 | true | 布尔值 |
| camel.component.amqp.allow-reply-manager-quick-stop | 如果 JmsConfiguration#isAcceptMessagesWhileStopping 在启用 JmsConfiguration#isAcceptMessagesWhileStopping 时,并且 org.apache.camel.Camel.CamelContext 当前已经停止。常规 JMS 用户默认启用这一快速停止功能,但为了回复经理,您必须启用此标志。 | false | 布尔值 |
| camel.component.amqp.always-copy-message | 如果为 true,则 Camel 将始终将消息的 JMS 消息副本传递给发送的制作者。在某些情况下,需要复制消息,例如当设置了 replyToDestinationSelectorName 时(通常,Camel 会将 alwaysCopyMessage 选项设置为 true,如设置了 replyToDestinationSelectorName) | false | 布尔值 |
| camel.component.amqp.async-consumer | JmsConsumer 是否异步处理 Exchange。如果启用,则 JmsConsumer 可能会从 JMS 队列获取下一个消息,而上一消息正在异步处理(通过异步路由引擎)。这意味着,消息可以被严格处理,按顺序处理。如果禁用(默认),则在 JmsConsumer 将从 JMS 队列中获取下一个消息之前,将完全处理 Exchange。请注意,如果已启用翻译,则 asyncConsumer=true 不会异步运行,因为事务必须同步执行(Camel 3.0 可能支持 async 事务)。 | false | 布尔值 |
| camel.component.amqp.async-start-listener | 启动路由时是否异步启动 JmsConsumer 消息监听程序。例如,如果 JmsConsumer 无法连接到远程 JMS 代理,则在重试和/或故障转移时可能会阻止它。这将导致 Camel 在启动路由时阻止。通过将此选项设置为 true,您将让路由启动,而 JmsConsumer 使用一个专用线程以异步模式连接到 JMS 代理。如果使用这个选项,那么请注意,如果无法建立连接,则会在 WARN 级别记录异常,并且使用者将无法接收消息;然后,您可以重启要重试的路由。 | false | 布尔值 |
| camel.component.amqp.async-stop-listener | 在停止路由时,是否异步停止 JmsConsumer 消息监听程序。 | false | 布尔值 |
| camel.component.amqp.auto-startup | 指定使用者容器是否应该自动启动。 | true | 布尔值 |
| camel.component.amqp.cache-level | 根据底层 JMS 资源的 ID 设置缓存级别。如需了解更多详细信息,请参阅 cacheLevelName 选项。 | 整数 | |
| camel.component.amqp.cache-level-name | 按照底层 JMS 资源的名称设置缓存级别。可能的值有:CACHE_AUTO、CACHE_CONNECTION、CACHE_CONSUMER、CACHE_NONE 和 CACHE_SESSION。默认设置为 CACHE_AUTO。如需更多信息,请参阅 Spring 文档和事务缓存级别。 | CACHE_AUTO | 字符串 |
| camel.component.amqp.client-id | 设置要使用的 JMS 客户端 ID。请注意,这个值必须是唯一的,且只能供单个 JMS 连接实例使用。通常只有持久主题订阅才是必需的。如果使用 Apache ActiveMQ,您可以改为使用虚拟主题。 | 字符串 | |
| camel.component.amqp.concurrent-consumers | 指定使用 JMS 时的默认并发用户数(不用于请求/相对 JMS)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当执行请求/相对于 JMS 时,选项回复ToConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。 | 1 | 整数 |
| camel.component.amqp.configuration | 使用共享的 JMS 配置:选项是一个 org.apache.camel.component.jms.JmsConfiguration 类型。 | 字符串 | |
| camel.component.amqp.connection-factory | 要使用的连接工厂。必须在组件或端点上配置连接工厂。选项是一个 javax.jms.ConnectionFactory 类型。 | 字符串 | |
| camel.component.amqp.correlation-property | 使用此 JMS 属性将消息与 InOut Exchange 模式(request-reply)而不是 JMSCorrelationID 属性关联。这样,您可以使用 JMSCorrelationID JMS 属性将消息与不关联消息的系统交换。如果未使用 JMSCorrelationID,则 Camel 将不会被使用或设置。如果未在同一名称下的消息标题中提供,则生成此指定属性的值。 | 字符串 | |
| camel.component.amqp.default-task-executor-type | 指定在 DefaultMessageListenerContainer 中使用哪些默认 TaskExecutor 类型,用于使用者端点和制作者端点的 ReplyTo consumer。可能的值有: SimpleAsync (使用 Spring 的 SimpleAsyncTaskExecutor)或 ThreadPool (使用具有最优值的 Spring 的 ThreadPoolTaskExecutor)。如果没有设置,则默认为之前的行为,它将缓存的线程池用于消费者端点和 SimpleAsync 回复消费者消费者。建议使用 ThreadPool 以减少弹性配置中的线程回收,并动态增加和减少并发用户。 | DefaultTaskExecutor Type | |
| camel.component.amqp.delivery-mode | 指定要使用的交付模式。Possibles 值由 javax.jms.DeliveryMode 定义。NON_PERSISTENT = 1 和 PERSISTENT = 2. | 整数 | |
| camel.component.amqp.delivery-persistent | 指定是否默认使用持久交付。 | true | 布尔值 |
| camel.component.amqp.destination-resolver | 可插拔 org.springframework.jms.support.destination.DestinationResolver,允许您使用自己的解析器(例如,在 JNDI 注册表中查找真实目的地)。选项是一个 org.springframework.jms.support.destination.DestinationResolver 类型。 | 字符串 | |
| camel.component.amqp.durable-subscription-name | 指定持久主题订阅的持久订阅者名称。还必须配置 clientId 选项。 | 字符串 | |
| camel.component.amqp.eager-loading-of-properties | 在加载消息时立即加载 JMS 属性,因为可能不需要 JMS 属性,但有时可能会遇到底层 JMS 提供程序及使用 JMS 属性的早期问题。 | false | 布尔值 |
| camel.component.amqp.enabled | 启用 amqp 组件 | true | 布尔值 |
| camel.component.amqp.error-handler | 指定在处理消息时出现任何意外异常时要调用的 org.springframework.util.ErrorHandler。默认情况下,如果没有配置错误处理程序,则这些异常会记录在 WARN 级别。您可以配置日志记录级别,以及是否应使用 errorHandlerLoggingLevel 和 errorHandlerLogStackTrace 选项记录堆栈追踪。这样可以更容易配置,而不是对自定义错误处理程序进行编码。选项是一个 org.springframework.util.ErrorHandler 类型。 | 字符串 | |
| camel.component.amqp.error-handler-log-stack-trace | 允许控制是否应该记录堆栈追踪,默认错误处理程序。 | true | 布尔值 |
| camel.component.amqp.error-handler-logging-level | 允许配置默认错误处理程序日志记录级别,以记录异常。 | LoggingLevel | |
| camel.component.amqp.exception-listener | 指定任何底层 JMS 异常通知的 JMS Exception Listener。选项是 javax.jms.ExceptionListener 类型。 | 字符串 | |
| camel.component.amqp.explicit-qos-enabled | 设定在发送消息时应使用 deliveryMode、priority 或 timeToLive 服务质量。这个选项基于 Spring 的 JmsTemplate。deliveryMode、priority 和 timeToLive 选项应用到当前的端点。这与 preserveMessageQos 选项不同,该选项以消息粒度运行,从 Camel In message 标头专门读取 QoS 属性。 | false | 布尔值 |
| camel.component.amqp.expose-listener-session | 指定在消耗消息时是否应公开监听程序会话。 | false | 布尔值 |
| camel.component.amqp.force-send-original-message | 在使用 mapJmsMessage=false Camel 时,如果您在路由期间接触标头(get 或 set)时,将创建一个新的 JMS 消息来发送到新的 JMS 目标。将这个选项设置为 true 以强制 Camel 发送收到的原始 JMS 消息。 | false | 布尔值 |
| camel.component.amqp.format-date-headers-to-iso8601 | 设置日期标头是否应该根据 ISO 8601 标准进行格式化。 | false | 布尔值 |
| camel.component.amqp.header-filter-strategy | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。选项是一个 org.apache.camel.spi.HeaderFilterStrategy 类型。 | 字符串 | |
| camel.component.amqp.idle-consumer-limit | 指定允许在任何给定时间闲置的用户数量的限制。 | 1 | 整数 |
| camel.component.amqp.idle-task-execution-limit | 指定接收任务的空闲执行的限制,没有在其执行过程中收到任何信息。如果达到这个限制,任务将关闭并离开其他执行任务(在出现动态调度的情况下),请参阅 maxConcurrentConsumers 设置。Spring 还有额外的文档。 | 1 | 整数 |
| camel.component.amqp.include-all-j-m-s-x-properties | 从 JMS 到 Camel 消息映射时是否包括所有 JMSXxxx 属性。将其设置为 true 将包括 JMSXAppID 和 JMSXUserID 等属性。注:如果您使用自定义 headerFilterStrategy,则这个选项不会应用。 | false | 布尔值 |
| camel.component.amqp.include-sent-j-m-s-message-i-d | 仅适用于使用 InOnly 发送到 JMS 目的地(请触发和忘记)。启用此选项将丰富的 Camel Exchange 与 JMS 客户端在消息发送到 JMS 目的地时使用的实际 JMSMessageID 一起丰富。 | false | 布尔值 |
| camel.component.amqp.jms-key-format-strategy | 用于编码和解码 JMS 密钥的可插拔策略,以便它们符合 JMS 规范。Camel 提供了两个开箱即用的实现:默认和直通。默认策略将安全汇总点和连字符(. 和 -)。passthrough 策略会保留密钥,即:可用于不小心 JMS 标头键是否包含非法字符的 JMS 代理。您可以自行实施 org.apache.camel.component.jms.JmsKeyFormatStrategy,并使用 # 表示法引用它。选项是一个 org.apache.camel.component.jms.JmsKeyFormatStrategy 类型。 | 字符串 | |
| camel.component.amqp.jms-operations | 允许您使用自己实施 org.springframework.jms.core.JmsOperations 接口。Camel 使用 JmsTemplate 作为默认值。可用于测试目的,但不如 spring API 文档中所述。选项是一个 org.springframework.jms.core.JmsOperations 类型。 | 字符串 | |
| camel.component.amqp.lazy-create-transaction-manager | 如果为 true,如果选项 transacted=true 中没有注入事务管理器,Camel 会创建一个 JmsTransactionManager。 | true | 布尔值 |
| camel.component.amqp.map-jms-message | 指定 Camel 是否应将收到的 JMS 消息自动映射到合适的载荷类型,如 javax.jms.TextMessage 到字符串等。 | true | 布尔值 |
| camel.component.amqp.max-concurrent-consumers | 指定来自 JMS 时的最大并发用户数(不用于请求/相对 JMS)。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。当执行请求/相对于 JMS 时,选项 replyToMaxConcurrentConsumers 用于控制回复消息监听器上的并发用户数量。 | 整数 | |
| camel.component.amqp.max-messages-per-task | 每个任务的消息数量。-1 代表无限。如果您为并发使用者使用范围(如 min max),则此选项可用于将值设置为 eg 100 来控制在不需要较少工作时消费者的快速程度。 | -1 | 整数 |
| camel.component.amqp.message-converter | 要使用自定义的 Spring org.springframework.jms.support.converter.MessageConverter,以便您可以控制如何映射到 javax.jms.Message。选项是一个 org.springframework.jms.support.converter.MessageConverter 类型。 | 字符串 | |
| camel.component.amqp.message-created-strategy | 要使用给定的 MessageCreatedStrategy,在 Camel 发送 JMS 消息时,将在 Camel 创建新实例 javax.jms.Message 对象时来调用。选项是一个 org.apache.camel.component.jms.MessageCreatedStrategy 类型。 | 字符串 | |
| camel.component.amqp.message-id-enabled | 发送时,指定是否应添加消息 ID。这只是 JMS 代理的提示。如果 JMS 提供程序接受此提示,这些消息必须将消息 ID 设置为 null;如果提供商忽略 hint,消息 ID 必须设置为其正常的唯一值 | true | 布尔值 |
| camel.component.amqp.message-timestamp-enabled | 指定在发送消息时是否应默认启用时间戳。这只是一个到 JMS 代理的提示。如果 JMS 供应商接受这个 hint,这些消息必须将时间戳设置为零。如果供应商忽略了提示,时间戳必须设置为其正常值 | true | 布尔值 |
| camel.component.amqp.password | 要用于 ConnectionFactory 的密码。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
| camel.component.amqp.preserve-message-qos | 设置为 true,如果要使用消息中指定的 QoS 设置发送消息,而不是 JMS 端点上的 QoS 设置。以下三个标头被视为 JMSPriority、JMSDeliveryMode 和 JMSExpiration。您可以提供全部或部分功能。如果没有提供,Camel 将回退为使用来自端点的值。因此,在使用这个选项时,标头会覆盖端点中的值。相反,显式QosEnabled 选项只会使用在端点上设置的选项,而不是消息标头中的值。 | false | 布尔值 |
| camel.component.amqp.priority | 高于 1 的值在发送时指定消息优先级(其中 0 是最低优先级),以及 9 是最高优先级。还必须启用显式QosEnabled 选项,才能使此选项生效。 | 4 | 整数 |
| camel.component.amqp.pub-sub-no-local | 指定是否禁止交付其自身连接发布的消息。 | false | 布尔值 |
| camel.component.amqp.queue-browse-strategy | 在浏览队列时使用自定义 QueueBrowseStrategy。选项是一个 org.apache.camel.component.jms.QueueBrowseStrategy 类型。 | 字符串 | |
| camel.component.amqp.receive-timeout | 接收消息的超时时间(以毫秒为单位)。 | 1000 | Long |
| camel.component.amqp.recovery-interval | 指定恢复尝试之间的间隔,即当连接被刷新时(以毫秒为单位)。默认值为 5000 ms,即 5 秒。 | 5000 | Long |
| camel.component.amqp.reply-on-timeout-to-max-concurrent-consumers | 指定在使用 request/reply over JMS 时超时发生时持续路由的并发使用者的最大数量。 | 1 | 整数 |
| camel.component.amqp.reply-to-cache-level-name | 在通过 JMS 进行请求/回复消费者时,按照名称设置缓存级别。这个选项只适用于使用固定的回复队列(而不是临时)。Camel 默认使用:CACHE_CONSUMER 用于独占或共享 w/ replyToSelectorName。以及在没有 replyToSelectorName 的情况下共享的 CACHE_SESSION。有些 JMS 代理(如 IBM WebSphere)可能需要设置 replyToCacheLevelName=CACHE_NONE 才能工作。注:如果使用临时队列,则不允许使用 CACHE_NONE,且必须使用更高的值,如 CACHE_CONSUMER 或 CACHE_SESSION。 | 字符串 | |
| camel.component.amqp.reply-to-concurrent-consumers | 指定在进行请求/相对于 JMS 时的默认并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | 1 | 整数 |
| camel.component.amqp.reply-to-max-concurrent-consumers | 指定在 JMS 中使用请求/回复时的最大并发用户数量。另请参阅 maxMessagesPerTask 选项来控制线程的动态扩展/关闭。 | 整数 | |
| camel.component.amqp.reply-to-type | 允许显式指定在进行请求/恢复 JMS 时用于回复队列的策略。可能的值有:Trimporary、Shared 或 Exclusive。默认情况下,Camel 将使用临时队列。但是,如果已经配置了 replyTo,则默认使用 Shared。此选项允许您使用专用队列而不是共享队列。请参阅 Camel JMS 文档了解更多详情,特别是有关在集群环境中运行时所造成影响的备注,以及共享回复队列的性能比其 alternatives Temporary 和 Exclusive 的性能有不同。 | ReplyToType | |
| camel.component.amqp.request-timeout | 在使用 InOut Exchange Pattern (以毫秒为单位)时等待回复的超时。默认值为 20 秒。您可以包含标头 CamelJmsRequestTimeout 来覆盖此端点配置的超时值,因此每个消息单独的超时值。另请参阅 requestTimeoutCheckerInterval 选项。 | 20000 | Long |
| camel.component.amqp.request-timeout-checker-interval | 配置在通过 JMS 进行请求时,Camel 应该检查超时交换的频率。默认情况下,Camel 会检查每秒一次。但是,如果发生超时时您必须更快地做出反应,那么您可以降低这个间隔,以更频繁地检查。超时由选项 requestTimeout 决定。 | 1000 | Long |
| camel.component.amqp.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.amqp.stream-message-type-enabled | 设定是否启用 StreamMessage 类型。消息有效负载的流传输类型(如文件、InputStream 等)将作为 BytesMessage 或 StreamMessage 发送。此选项控制将使用哪一种类型。默认情况下使用 BytesMessage,它强制读取到内存中的完整消息有效负载。通过启用此选项,消息有效负载在块中读取到内存中,每个块都会写入 StreamMessage,直到没有更多数据。 | false | 布尔值 |
| camel.component.amqp.subscription-durable | 设置是否使订阅持久。要使用的持久订阅名称可以通过 subscriptionName 属性指定。默认为 false。将其设置为 true 以注册持久的订阅,通常与 subscriptionName 值结合使用(除非您的消息监听器类名称足够好作为订阅名称)。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。 | false | 布尔值 |
| camel.component.amqp.subscription-name | 设置要创建的订阅的名称。要应用一个带有共享或 durable 订阅的主题(pub-sub 域)。订阅名称需要在这个客户端的 JMS 客户端 ID 中唯一。default 是指定消息监听程序的类名称。注:每个订阅只允许 1 个并发使用者(默认是此消息监听器容器),但共享订阅除外(需要 JMS 2.0)。 | 字符串 | |
| camel.component.amqp.subscription-shared | 设置是否使订阅共享。可以通过 subscriptionName 属性指定要使用的共享订阅名称。默认为 false。将其设置为 true 以注册共享订阅,通常与 subscriptionName 值结合使用(除非您的消息监听程序类名称已足够符合订阅名称)。请注意,共享订阅也可能是持久的,因此此标志也可以(并经常将)与订阅相整合。只有侦听主题(pub-sub 域)时,这种方法才会切换到 pubSubDomain 标志。需要 JMS 2.0 兼容消息代理。 | false | 布尔值 |
| camel.component.amqp.task-executor | 允许您指定自定义任务 executor 来使用消息。选项是一个 org.springframework.core.task.TaskExecutor 类型。 | 字符串 | |
| camel.component.amqp.test-connection-on-startup | 指定是否在启动时测试连接。这可确保当 Camel 启动时,所有 JMS 用户都具有与 JMS 代理的有效连接。如果无法授予连接,Camel 会在启动时抛出异常。这样可确保 Camel 没有启动失败的连接。JMS 生产商也进行了测试。 | false | 布尔值 |
| camel.component.amqp.time-to-live | 发送消息时,指定消息的时间(以毫秒为单位)。 | -1 | Long |
| camel.component.amqp.transacted | 指定是否使用翻译模式 | false | 布尔值 |
| camel.component.amqp.transaction-manager | 要使用的 Spring 事务管理器。选项是一个 org.springframework.transaction.PlatformTransactionManager 类型。 | 字符串 | |
| camel.component.amqp.transaction-name | 要使用的事务的名称。 | 字符串 | |
| camel.component.amqp.transaction-timeout | 事务的超时值(以秒为单位)。 | -1 | 整数 |
| camel.component.amqp.transfer-exception | 如果启用并且您正在使用 Request Reply messaging (InOut),并且一个 Exchange 在使用者端失败,则会导致 Exception 发回为 javax.jms.ObjectMessage。如果客户端是 Camel,则返回的 Exception 会被重新箭头。这样,您可以使用 Camel JMS 作为路由中的网桥 - 例如,使用持久性队列来启用可靠的路由。请注意,如果您也启用了 transferExchange,则此选项将具有优先权。请注意的异常需要是序列化的。使用者端的原始例外可以包装在外部异常中,如 org.apache.camel.RuntimeCamelException (返回到制作者)。 | false | 布尔值 |
| camel.component.amqp.transfer-exchange | 您可以通过线路传输交换,而不只是正文和标头。传输以下字段如下:正文、出站正文、容错正文、入口、出口标头、容错标头、交换属性、交换异常。这要求对象是序列化的。Camel 将排除任何非序列化对象,并在 WARN 级别记录它。您必须在制作者和消费者端启用此选项,因此 Camel 知道有效负载是 Exchange,而非常规有效负载。 | false | 布尔值 |
| camel.component.amqp.transfer-fault | 如果启用且您使用 Request Reply messaging (InOut)和 Exchange failed,在消费者端使用 SOAP 故障(而非例外),则 Message#isFault ()上的 fault 标志将重新作为带有键 org.apache.camelcomponent.jms.JmsConstants #JMS_TRANSFOTER_JMS 标头的 JMS 标头来回发送。如果客户端是 Camel,则返回的 fault 标志将在 org.apache.camel.Message#setFault (布尔值)上设置。在使用支持故障的 Camel 组件(如 cxf 或 spring-ws)时,您可能需要启用此功能。 | false | 布尔值 |
| camel.component.amqp.use-message-i-d-as-correlation-i-d | 指定 JMSMessageID 是否应该始终用作 InOut 消息的 JMSCorrelationID。 | false | 布尔值 |
| camel.component.amqp.username | 用于 ConnectionFactory 的用户名。您还可以直接在 ConnectionFactory 上配置用户名/密码。 | 字符串 | |
| camel.component.amqp.wait-for-provision-correlation-to-be-updated-counter | 在对 JMS 进行请求/恢复请求时,等待 provisional 关联 id 会被更新为实际关联 id 的次数,以及选项 useMessageIDAsCorrelationID。 | 50 | 整数 |
| camel.component.amqp.wait-for-provision-correlation-to-be-updated-thread-sleeping-time | millis 在等待 provisional correlation id 被更新期间,每次处于睡眠状态的时间间隔。 | 100 | Long |
5.4. 使用 复制链接链接已复制到粘贴板!
由于 AMQP 组件从 JMS 组件继承,以前的用法与后者几乎相同:
使用 AMQP 组件
5.5. 配置 AMQP 组件 复制链接链接已复制到粘贴板!
从 Camel 2.16.1 开始,您还可以使用 AMQPComponent#amqp10Component (String connectionURI) factory 方法返回 AMQP 1.0 组件,使用预先配置的主题前缀:
创建 AMQP 1.0 组件
AMQPComponent amqp = AMQPComponent.amqp10Component("amqp://guest:guest@localhost:5672");
AMQPComponent amqp = AMQPComponent.amqp10Component("amqp://guest:guest@localhost:5672");
请记住,从 Camel 2.17 开始, AMQPComponent#amqp10Component (String connectionURI) 工厂方法的代表 AMQPComponent#amqpComponent (String connectionURI) 已被弃用:
创建 AMQP 1.0 组件
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672");
AMQPComponent authorizedAmqp = AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672");
AMQPComponent authorizedAmqp = AMQPComponent.amqpComponent("amqp://localhost:5672", "user", "password");
从 Camel 2.17 开始,若要自动配置 AMQP 组件,您还可以向注册表添加 org.apache.camel.component.amqp.AMQPConnectionDetails 实例。例如,对于 Spring Boot,您必须定义 bean:
AMQP 连接详情自动配置
同样,在使用 Camel-CDI 时也可以使用 CDI producer 方法
AMQP 连接详情用于 CDI 的自动配置
@Produces
AMQPConnectionDetails amqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672");
}
@Produces
AMQPConnectionDetails amqpConnection() {
return new AMQPConnectionDetails("amqp://localhost:5672");
}
您还可以依赖 Camel 属性来读取 AMQP 连接详情。factory 方法 AMQPConnectionDetails.discoverAMQP () 尝试在类似 Kubernetes 的约定中读取 Camel 属性,具体如以下代码片段所示:
AMQP 连接详情自动配置
启用 AMQP 特定选项
例如,如果需要启用 amqp.traceFrames,您可以通过将 选项附加到 URI 来执行此操作,如下例所示:
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
AMQPComponent amqp = AMQPComponent.amqpComponent("amqp://localhost:5672?amqp.traceFrames=true");
要参考,请查看 QPID JMS 客户端配置
5.6. 使用主题 复制链接链接已复制到粘贴板!
要使用与 camel-amqp 相关的主题,您需要配置组件以使用 topic:// 作为主题前缀,如下所示:
请记住,AMQPComponent#amqpComponent () 方法和 AMQPConnectionDetails 都会预先配置该组件,因此您不必显式配置它。
5.7. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
第 6 章 APNS 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.8 使用
apns 组件用于将通知发送到 iOS 设备。apns 组件使用 javapns 库。
组件支持向 Apple Push Notification Servers (APNS)发送通知并消耗来自服务器的反馈。
默认情况下,消费者配置了 3600 秒以进行轮询,因为最佳实践是仅使用 Apple Push Notification Servers 中的内容流仅从时间到时间。例如: 每小时每小时避免损坏服务器。
反馈流提供有关不活跃设备的信息。如果您的移动应用程序没有大量使用时,您只需要在数小时获取此信息。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
6.1. URI 格式 复制链接链接已复制到粘贴板!
发送通知:
apns:notify[?options]
apns:notify[?options]
使用反馈:
apns:consumer[?options]
apns:consumer[?options]
6.2. 选项 复制链接链接已复制到粘贴板!
APNS 组件支持 2 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| apnsService (common) | 需要使用 ApnsService。org.apache.camel.component.apns.factory.ApnsServiceFactory 可用于构建 ApnsService | ApnsService | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
APNS 端点使用 URI 语法配置:
apns:name
apns:name
使用以下路径和查询参数:
6.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| name | 端点的名称 | 字符串 |
6.2.2. 查询参数(20 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| tokens (common) | 如果要静态声明与您要通知的设备相关的令牌,请配置此属性。令牌用逗号分开。 | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| pollStrategy (consumer) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。 | PollingConsumerPoll Strategy | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| backoffErrorThreshold (scheduler) | 后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。 | int | |
| backoffIdleThreshold (scheduler) | 后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。 | int | |
| backoffMultiplier (scheduler) | 如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。 | int | |
| 延迟 (scheduler) | 下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 500 | long |
| greedy (scheduler) | 如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。 | false | 布尔值 |
| initialDelay (scheduler) | 第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 1000 | long |
| runLoggingLevel (scheduler) | 消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。 | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。 | ScheduledExecutor 服务 | |
| 调度程序 (scheduler) | 使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序 | none | ScheduledPollConsumer Scheduler |
| schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。 | map | |
| startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
| timeUnit (scheduler) | 初始延迟和延迟选项的时间单位。 | 毫秒 | TimeUnit |
| useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
6.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 3 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.apns.apns-service | 要使用的 ApnsService。org.apache.camel.component.apns.factory.ApnsServiceFactory 可用于构建 ApnsService。选项为 com.notnoop.apns.ApnsService 类型。 | 字符串 | |
| camel.component.apns.enabled | 启用 apns 组件 | true | 布尔值 |
| camel.component.apns.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…
6.3.1. 组件 复制链接链接已复制到粘贴板!
ApnsComponent 必须使用 com.notnoop.apns.ApnsService 进行配置。可以使用 org.apache.camel.component.apns.factory.ApnsServiceFactory 创建和配置该服务。请参阅以下示例。以及测试 源代码。
6.3.1.1. SSL 设置 复制链接链接已复制到粘贴板!
要使用安全连接,org.apache.camel.jsse.jsse.SSLContextParameters 实例应当注入到 org.apache.camel.component.apns.factory.ApnsServiceFactory,用于配置该组件。如需示例,请参阅 test 资源。SSL 示例
6.4. 交换数据格式 复制链接链接已复制到粘贴板!
当 Camel 获取与不活跃设备对应的反馈数据时,它将检索 InactiveDevice 对象列表。检索列表的每个 InactiveDevice 对象将设置为 In body,然后由消费者端点处理。
6.5. 消息标头 复制链接链接已复制到粘贴板!
Camel Apns 使用这些标头。
| 属性 | 默认 | 描述 |
|---|---|---|
|
| 默认为空。 | |
|
|
| 如果您选择 PAYLOAD 作为消息类型,则消息将被视为 APNS 有效负载,并以 身份发送。如果选择 STRING,则会将消息转换为 APNS 有效负载。从采用 APNS_NOTIFICATION 的 Camel 2.16,用于将邮件正文作为 com.notnoop.apns.ApnsNotification 类型发送。 |
6.6. ApnsServiceFactory builder callback 复制链接链接已复制到粘贴板!
ApnsServiceFactory 附带了一个空的回调方法,可用于配置(甚至替换)默认的 ApnsServiceBuilder 实例。方法的签名如下:
protected ApnsServiceBuilder configureServiceBuilder(ApnsServiceBuilder serviceBuilder);
protected ApnsServiceBuilder configureServiceBuilder(ApnsServiceBuilder serviceBuilder);
可使用如下方式:
6.7. Samples 复制链接链接已复制到粘贴板!
6.7.1. Camel Xml 路由 复制链接链接已复制到粘贴板!
6.7.2. Camel Java 路由 复制链接链接已复制到粘贴板!
创建 camel 上下文并以编程方式声明 apns 组件
[[APNS-ApnsProducer-iOStargetdevicedynamicallyconfiguredviaheader:"CamelApnsTokens"]] ApnsProducer - iOS 目标设备通过标头 "CamelApnsTokens"
ApnsProducer - iOS 目标设备通过 uri 静态配置
ApnsConsumer
from("apns:consumer?initialDelay=10&delay=3600&timeUnit=SECONDS")
.to("log:com.apache.camel.component.apns?showAll=true&multiline=true")
.to("mock:result");
from("apns:consumer?initialDelay=10&delay=3600&timeUnit=SECONDS")
.to("log:com.apache.camel.component.apns?showAll=true&multiline=true")
.to("mock:result");
6.8. 另请参阅 复制链接链接已复制到粘贴板!
第 7 章 ASN.1 File DataFormat 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
ASN.1 数据格式数据格式 [Intoduction to ASN.1](https://www.itu.int/en/ITU-T/asn1/Pages/introduction.aspx)是一个 Camel Framework 的数据格式实现,它基于 Bouncy Castle 的 bcprov-jdk15on 库和 jASN.1 的 Java 编译器,用于描述通过电信协议传输的数据格式的实施,无论这些数据在语言的实施和物理表示,均很复杂。消息可以解封(版本至简单的 Java POJO)到普通 Java 对象。通过帮助 Camel 路由引擎和数据转换,您可以使用 POJO (POJO)进行工作,并应用定制格式并应用定制格式,并调用其他 Camel 组件将消息转换为上游系统。
7.1. ASN.1 数据格式选项 复制链接链接已复制到粘贴板!
ASN.1 文件数据格式支持 3 个选项,它们如下所列。
| 名称 | 默认 | Java 类型 | 描述 |
|---|---|---|---|
| usingIterator |
|
| 如果 asn1 文件含有多个条目,那么将此选项设置为 true,允许使用 splitter EIP,以流模式使用它分割数据。 |
| clazzName |
| 取消编出时使用的类名称 | |
| contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 |
7.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 4 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.dataformat.asn1.clazz-name | 取消编出时使用的类名称 | 字符串 | |
| camel.dataformat.asn1.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.asn1.enabled | 是否启用自动配置 asn1 数据格式。默认启用。 | 布尔值 | |
| camel.dataformat.asn1.using-iterator | 如果 asn1 文件含有多个条目,那么将此选项设置为 true,允许使用 splitter EIP,以流模式使用它分割数据。 | false | 布尔值 |
ND
7.3. unmarshal 复制链接链接已复制到粘贴板!
有 3 种不同的方法可以集出 ASN.1 结构化消息。(通常是二进制文件)
在第一个示例中,我们向 OutputStream 传播的文件有效负载,并将其发送到模拟端点。
from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
from("direct:unmarshal").unmarshal(asn1).to("mock:unmarshal");
在第二个示例中,我们使用 Split EIP 将文件有效负载分到字节阵列。应用 Split EIP 的原因通常是每个 BER 文件或(ASN.1 结构化文件)包含多个记录来处理;Split EIP 有助于我们将文件中的每条记录作为字节阵列(实际上是 ASN1Primitive's ASN)的实例(利用 Bouncy Castle 的 ASN bcprov-jdk15on 库中的 .1 支持者数组,可能会被转换为 ASN1Primitive (ASN1Primitive.fromByteArray)的帮助,例如: 请注意,您需要使用 Iterator=true进行设置
from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
from("direct:unmarshal").unmarshal(asn1).split(body(Iterator.class)).streaming().to("mock:unmarshal");
在最后一个示例中,我们使用 Split EIP 将文件有效负载分到普通 Java 对象。上例中已提到应用 Split EIP 的原因。请注意,请记住,原因。在本例中,我们还需要通过数据格式设置类或 <YourObject>.class 引用的完全限定名称。这里要注意的一点是,Jasn1 编译器应该已经生成您的对象,它是一个 nice 工具来生成您的 ASN.1 结构的 java 对象表示。有关 jasn1 编译器的参考信息,请参阅 [JASN.1 项目页面](https://www.openmuc.org/asn1/)。另外,还了解如何使用 maven 的 exec 插件调用编译器。例如,在这种数据格式的单元测试中,在 src/test/resources/asn/asn1 中添加了一个示例 ASN.1 结构 (TestSMSBerCdr.asn/java/asn1 编译器。jasn1 编译器会在 ${basedir}/target/generated/src/test/java 中生成。
from("direct:unmarshaldsl")
.unmarshal()
.asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr")
.split(body(Iterator.class)).streaming()
.to("mock:unmarshaldsl");
from("direct:unmarshaldsl")
.unmarshal()
.asn1("org.apache.camel.dataformat.asn1.model.testsmscbercdr.SmsCdr")
.split(body(Iterator.class)).streaming()
.to("mock:unmarshaldsl");
7.4. 依赖项 复制链接链接已复制到粘贴板!
要在 camel 路由中使用 ASN.1 数据格式,您需要添加对 camel-asn1 的依赖关系,该格式实施此数据格式。
如果使用 Maven,您只需在 pom.xml 中添加以下内容,替换最新和最长版本的版本号(请参阅最新版本的下载页面)。
第 8 章 AS2 组件 复制链接链接已复制到粘贴板!
Karaf 的 camel-as2 组件只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。
这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅 https://access.redhat.com/support/offerings/techpreview。
可作为 Camel 版本 2.22 可用
AS2 组件使用 RFC4130 中指定的 HTTP 传输协议提供 EDI 消息传输。
这个组件目前正在进行中。预计这个组件的未来版本中要更改 URI 选项和路径和查询参数。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
8.1. URI 格式 复制链接链接已复制到粘贴板!
as2://apiName/methodName
as2://apiName/methodName
apiName 可以是以下之一:
- client
- server
8.2. AS2 选项 复制链接链接已复制到粘贴板!
AS2 组件支持 2 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| configuration (common) | 使用共享配置 | AS2Configuration | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AS2 端点使用 URI 语法配置:
as2:apiName
as2:apiName
使用以下路径和查询参数:
8.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| apiName | 需要 什么操作才能执行 | AS2ApiName |
8.2.2. 查询参数(30 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| as2From (common) | AS2From 标头的 AS2From 标头的值。 | 字符串 | |
| as2MessageStructure (common) | AS2 消息的结构.其中之一:PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, 签名 | AS2MessageStructure | |
| as2To (common) | AS2To 标头的 AS2To 标头的值。 | 字符串 | |
| as2Version (common) | AS2 协议的版本。 | 1.1 | 字符串 |
| clientFqdn (common) | Client Fully Qualified Domain Name (FQDN)。用于端点发送的消息 ID 中。 | camel.apache.org | 字符串 |
| dispositionNotificationTo (common) | Disposition-Notification-To 标头的值。为此参数分配一个值,为 AS2 消息请求消息分散通知(MDN)。 | 字符串 | |
| ediMessageTransferEncoding (common) | EDI 消息的传输编码。 | 字符串 | |
| ediMessageType (common) | EDI 消息的内容类型。应用程序/制造商之一、应用程序/或x12、应用程序/委员会 | ContentType | |
| encryptingAlgorithm (common) | 用于加密 EDI 消息的算法。 | AS2EncryptionAlgorithm | |
| encryptingCertificateChain (common) | 用于加密 EDI 消息的证书链。 | Certificate[] | |
| encryptingPrivateKey (common) | 用于加密 EDI 消息的密钥。 | PrivateKey | |
| from (common) | AS2 消息的 From 标头的值。 | 字符串 | |
| inBody (common) | 设置在 Exchange In Body 中传递的参数名称 | 字符串 | |
| methodName (common) | 所选操作需要什么子操作 | 字符串 | |
| requestUri (common) | EDI 消息的请求 URI。 | / | 字符串 |
| server (common) | 包括在服务器消息标题中标识 AS2 服务器的值。 | Camel AS2 服务器端点 | 字符串 |
| serverFqdn (common) | Server Fully Qualified Domain Name (FQDN)。用于端点发送的消息 ID 中。 | camel.apache.org | 字符串 |
| serverPortNumber (common) | 服务器的端口号。 | 整数 | |
| signedReceiptMicAlgorithms (common) | 算法列表,按首选项顺序排列,在消息处理通知(MDN)中生成消息完整性检查(MIC)将返回的消息完整性检查(MIC) | String[] | |
| signingAlgorithm (common) | 用于签署 EDI 消息的算法。 | AS2SignatureAlgorithm | |
| signingCertificateChain (common) | 用于签署 EDI 消息的证书链。 | Certificate[] | |
| signingPrivateKey (common) | 用于为 EDI 消息签名的密钥。 | PrivateKey | |
| subject (common) | AS2 消息的 Subject 标头的值。 | 字符串 | |
| targetHostname (common) | 目标主机的主机名(IP 或 DNS 名称)。 | 字符串 | |
| targetPortNumber (common) | 目标主机的端口号。-1 表示方案默认端口。 | 整数 | |
| userAgent (common) | 包括在 User-Agent 消息标头中的值来标识 AS2 用户代理。 | Camel AS2 客户端端点 | 字符串 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
8.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 28 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.as2.configuration.api-name | 要执行的操作种类 | AS2ApiName | |
| camel.component.as2.configuration.as2-from | AS2From 标头的 AS2From 标头的值。 | 字符串 | |
| camel.component.as2.configuration.as2-message-structure | AS2 消息的结构.其中之一:PLAIN - No encryption, no signature, SIGNED - No encryption, signature, ENCRYPTED - Encryption, no signature, ENCRYPTED_SIGNED - Encryption, 签名 | AS2MessageStructure | |
| camel.component.as2.configuration.as2-to | AS2To 标头的 AS2To 标头的值。 | 字符串 | |
| camel.component.as2.configuration.as2-version | AS2 协议的版本。 | 1.1 | 字符串 |
| camel.component.as2.configuration.client-fqdn | Client Fully Qualified Domain Name (FQDN)。用于端点发送的消息 ID 中。 | camel.apache.org | 字符串 |
| camel.component.as2.configuration.disposition-notification-to | Disposition-Notification-To 标头的值。为此参数分配一个值,为 AS2 消息请求消息分散通知(MDN)。 | 字符串 | |
| camel.component.as2.configuration.edi-message-transfer-encoding | EDI 消息的传输编码。 | 字符串 | |
| camel.component.as2.configuration.edi-message-type | EDI 消息的内容类型。应用程序/制造商之一、应用程序/或x12、应用程序/委员会 | ContentType | |
| camel.component.as2.configuration.encrypting-algorithm | 用于加密 EDI 消息的算法。 | AS2EncryptionAlgorithm | |
| camel.component.as2.configuration.encrypting-certificate-chain | 用于加密 EDI 消息的证书链。 | Certificate[] | |
| camel.component.as2.configuration.encrypting-private-key | 用于加密 EDI 消息的密钥。 | PrivateKey | |
| camel.component.as2.configuration.from | AS2 消息的 From 标头的值。 | 字符串 | |
| camel.component.as2.configuration.method-name | 用于所选操作的子操作 | 字符串 | |
| camel.component.as2.configuration.request-uri | EDI 消息的请求 URI。 | / | 字符串 |
| camel.component.as2.configuration.server | 包括在服务器消息标题中标识 AS2 服务器的值。 | Camel AS2 服务器端点 | 字符串 |
| camel.component.as2.configuration.server-fqdn | Server Fully Qualified Domain Name (FQDN)。用于端点发送的消息 ID 中。 | camel.apache.org | 字符串 |
| camel.component.as2.configuration.server-port-number | 服务器的端口号。 | 整数 | |
| camel.component.as2.configuration.signed-receipt-mic-algorithms | 算法列表,按首选项顺序排列,在消息处理通知(MDN)中生成消息完整性检查(MIC)将返回的消息完整性检查(MIC) | String[] | |
| camel.component.as2.configuration.signing-algorithm | 用于签署 EDI 消息的算法。 | AS2SignatureAlgorithm | |
| camel.component.as2.configuration.signing-certificate-chain | 用于签署 EDI 消息的证书链。 | Certificate[] | |
| camel.component.as2.configuration.signing-private-key | 用于为 EDI 消息签名的密钥。 | PrivateKey | |
| camel.component.as2.configuration.subject | AS2 消息的 Subject 标头的值。 | 字符串 | |
| camel.component.as2.configuration.target-hostname | 目标主机的主机名(IP 或 DNS 名称)。 | 字符串 | |
| camel.component.as2.configuration.target-port-number | 目标主机的端口号。-1 表示方案默认端口。 | 整数 | |
| camel.component.as2.configuration.user-agent | 包括在 User-Agent 消息标头中的值来标识 AS2 用户代理。 | Camel AS2 客户端端点 | 字符串 |
| camel.component.as2.enabled | 是否启用 as2 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.as2.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
8.4. 客户端端点: 复制链接链接已复制到粘贴板!
客户端端点使用端点前缀 客户端,后接方法的名称及下一个描述的关联选项。端点 URI MUST 包含前缀 客户端。
as2://client/method?[options]
as2://client/method?[options]
不是必需的端点选项由 [] 表示。如果端点没有强制选项,则会提供一组 [] 选项 MUST。制作者端点也可以使用特殊选项 inBody ,它应当包含该端点选项的名称,其值将包含在 Camel Exchange In 消息中。
端点 URI 中都可以提供任何端点选项,或者在消息标头中动态提供。消息标头名称必须是 CamelAS2.<option> 的格式。请注意, inBody 选项会覆盖消息标头,例如, Body=option 中的 endpoint 选项会覆盖 CamelAS2.option 标头。
如果没有为端点 URI 中的选项 defaultRequest 提供值,则它将假定为 null。请注意,只有其它选项不满足匹配的端点时,才会使用 null 值。
如果是 AS2 API 错误,端点将抛出 RuntimeCamelException 和 org.apache.http.HttpException 派生异常原因。
| 方法 | 选项 | 结果 Body 类型 |
|---|---|---|
| send | ediMessage, requestUri, subject, from, as2From, as2To, as2MessageStructure, ediMessageContentType, ediMessageTransferEncoding, dispositionNotificationTo, signedReceiptMicAlgorithms | org.apache.http.protocol.HttpCoreContext |
客户端的URI 选项
| 名称 | 类型 |
|---|---|
| ediMessage | 字符串 |
| requestUri | 字符串 |
| subject | 字符串 |
| from | 字符串 |
| as2From | 字符串 |
| as2To | 字符串 |
| as2MessageStructure | org.apache.camel.component.as2.api.AS2MessageStructure |
| ediMessageContentType | 字符串 |
| ediMessageTransferEncoding | 字符串 |
| dispositionNotificationTo | 字符串 |
| signedReceiptMicAlgorithms | String[] |
8.5. 服务器端点: 复制链接链接已复制到粘贴板!
服务器端点使用端点前缀 server,后跟一个方法的名称以及接下来描述的关联选项。端点 URI MUST 包含前缀 服务器。
as2://server/method?[options]
as2://server/method?[options]
不是必需的端点选项由 [] 表示。如果端点没有强制选项,则会提供一组 [] 选项 MUST。制作者端点也可以使用特殊选项 inBody ,它应当包含该端点选项的名称,其值将包含在 Camel Exchange In 消息中。
端点 URI 中都可以提供任何端点选项,或者在消息标头中动态提供。消息标头名称必须是 CamelAS2.<option> 的格式。请注意, inBody 选项会覆盖消息标头,例如, Body=option 中的 endpoint 选项会覆盖 CamelAS2.option 标头。
如果没有为端点 URI 中的选项 defaultRequest 提供值,则它将假定为 null。请注意,只有其它选项不满足匹配的端点时,才会使用 null 值。
如果是 AS2 API 错误,端点将抛出 RuntimeCamelException 和 org.apache.http.HttpException 派生异常原因。
| 方法 | 选项 | 结果 Body 类型 |
|---|---|---|
| listen | requestUriPattern | org.apache.http.protocol.HttpCoreContext |
服务器的URI 选项
| 名称 | 类型 |
|---|---|
| requestUriPattern | 字符串 |
第 9 章 星号组件 复制链接链接已复制到粘贴板!
作为 Camel 2.18 版提供
星号: 组件允许您使用星号对 PBX 服务器 http://www.asterisk.org/ 轻松工作 https://asterisk-java.org/
此组件有助于与 Asterisk Manager 接口进行接口
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
9.1. URI 格式 复制链接链接已复制到粘贴板!
asterisk:name[?options]
asterisk:name[?options]
9.2. 选项 复制链接链接已复制到粘贴板!
Asterisk 组件没有选项。
Asterisk 端点使用 URI 语法配置:
asterisk:name
asterisk:name
使用以下路径和查询参数:
9.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| name | 所需 的逻辑名称 | 字符串 |
9.2.2. 查询参数(8 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| hostname (common) | 所需的 星号服务器的主机名 | 字符串 | |
| password (common) | 所需的 登录密码 | 字符串 | |
| username (common) | 所需的 登录用户名 | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| action (producer) | 要执行的操作,如获取队列状态、sip 对等点或扩展状态。 | AsteriskAction | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
9.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 2 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.asterisk.enabled | 启用星号组件 | true | 布尔值 |
| camel.component.asterisk.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
9.4. 操作 复制链接链接已复制到粘贴板!
支持的操作包括:
- QUEUE_STATUS, 队列状态
- SIP_PEERS, List SIP Peers
- EXTENSION_STATE, Check Extension 状态
第 10 章 Atmos 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.15 可用
Camel-Atmos 是一个 Apache Camel 组件,允许您使用 Atmos 客户端 来处理 ViPR 对象数据服务。
from("atmos:foo/get?remotePath=/path").to("mock:test");
from("atmos:foo/get?remotePath=/path").to("mock:test");
10.1. 选项 复制链接链接已复制到粘贴板!
Atmos 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| fullTokenId (security) | 传递给 Atmos 客户端的令牌 ID | 字符串 | |
| secretKey (security) | 传递给 Atmos 客户端的 secret 密钥 | 字符串 | |
| uri (advanced) | Atmos 客户端连接的服务器的 URI | 字符串 | |
| sslValidation (security) | Atmos 客户端是否应该执行 SSL 验证 | false | 布尔值 |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Atmos 端点使用 URI 语法进行配置:
atmos:name/operation
atmos:name/operation
使用以下路径和查询参数:
10.1.1. 路径名(2 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| name | Atmos 名称 | 字符串 | |
| operation | 执行 所需的操作 | AtmosOperation |
10.1.2. 查询参数(12 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| enableSslValidation (common) | Atmos SSL 验证 | false | 布尔值 |
| fullTokenId (common) | Atmos 客户端 fullTokenId | 字符串 | |
| localPath (common) | 放置文件的本地路径 | 字符串 | |
| newRemotePath (common) | 移动文件时在 Atmos 上的新路径 | 字符串 | |
| query (common) | 在 Atmos 上搜索查询 | 字符串 | |
| remotePath (common) | 在 Atmos 上放置文件的位置 | 字符串 | |
| secretKey (common) | Atmos 共享 secret | 字符串 | |
| uri (common) | Atomos server uri | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
10.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 6 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atmos.enabled | 启用 atmos 组件 | true | 布尔值 |
| camel.component.atmos.full-token-id | 传递给 Atmos 客户端的令牌 ID | 字符串 | |
| camel.component.atmos.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.atmos.secret-key | 传递给 Atmos 客户端的 secret 密钥 | 字符串 | |
| camel.component.atmos.ssl-validation | Atmos 客户端是否应该执行 SSL 验证 | false | 布尔值 |
| camel.component.atmos.uri | Atmos 客户端连接的服务器的 URI | 字符串 |
10.3. 依赖项 复制链接链接已复制到粘贴板!
要在 camel 路由中使用 Atmos,您需要添加实现此数据格式的 camel-atmos 依赖项。
如果您使用 maven,只需在 pom.xml 中添加以下内容,替换最新和最高版本的版本号(请参阅最新版本的下载页面)。
10.4. 集成 复制链接链接已复制到粘贴板!
当您查看mos 集成时,有一种类型的消费者 GetConsumer,它是 ScheduledPollConsumer 类型。
-
Get
其中有 4 种类型的制作者
-
Get -
Del -
Move -
put
10.5. 例子 复制链接链接已复制到粘贴板!
这些示例是从测试中获取的:
from("atmos:foo/get?remotePath=/path").to("mock:test");
from("atmos:foo/get?remotePath=/path").to("mock:test");
下面是一个消费者的示例。remotePath 代表数据要读取的路径,并将 camel Exchange 传递给制作者 Underneath,此组件将mos 客户端 API 用于此和其他操作。
from("direct:start")
.to("atmos://get?remotePath=/dummy/dummy.txt")
.to("mock:result");
from("direct:start")
.to("atmos://get?remotePath=/dummy/dummy.txt")
.to("mock:result");
在这里,这是一个制作者示例。remotePath 表示操作在 ViPR 对象数据服务上发生的路径。在制作者中,操作(Get、Del、Move、Put)在 ViPR 对象数据服务上运行,结果由 camel Exchange 的标头设置。
关于操作,会在 camel exhange 中设置以下标头
DOWNLOADED_FILE, DOWNLOADED_FILES, UPLOADED_FILE, UPLOADED_FILES, FOUND_FILES, DELETED_PATH, MOVED_PATH;
DOWNLOADED_FILE, DOWNLOADED_FILES, UPLOADED_FILE, UPLOADED_FILES, FOUND_FILES, DELETED_PATH, MOVED_PATH;
10.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
第 11 章 Atmosphere Websocket 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.14 可用
atmosphere-websocket: 组件为通过 Websocket 与外部客户端通信的 servlet 提供基于 Websocket 的端点(作为 servlet 接受来自外部客户端的 websocket 连接)。
组件使用 SERVLET 组件,并使用 Atmosphere 库来支持各种 Servlet 容器中的 Websocket 传输(如 Jetty、Tomcat、…)。
与启动嵌入式 Jetty 服务器的 Websocket 组件不同,该组件使用容器的 servlet 供应商。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
11.1. Atmosphere-Websocket 选项 复制链接链接已复制到粘贴板!
Atmosphere Websocket 组件支持 9 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| servletName (consumer) | 要使用的默认 servlet 名称。默认名称为 CamelServlet。 | CamelServlet | 字符串 |
| httpRegistry (consumer) | 使用自定义 org.apache.camel.component.servlet.HttpRegistry。 | HttpRegistry | |
| 附加多部分绑定 (使用者) | 是否会在 Camel Exchange 上自动绑定多部分/信息数据作为附件。选项附加MultipartBinding=true 和 disableStreamCache=false 无法一起工作。删除 disableStreamCache 以使用 AttachmentMultipartBinding。这将默认关闭,因为这可能需要 servlet 特定配置在使用 Servlet 时启用此功能。 | false | 布尔值 |
| fileNameExtWhitelist (consumer) | 接受上传的文件的接受文件名扩展白名单。多个扩展可以通过逗号分隔,如 txt,xml。 | 字符串 | |
| httpBinding (advanced) | 使用自定义 HttpBinding 控制 Camel 消息和 HttpClient 之间的映射。 | HttpBinding | |
| httpConfiguration (advanced) | 使用共享 HttpConfiguration 作为基本配置。 | HttpConfiguration | |
| allowJavaSerialized Object (advanced) | 请求使用 context-type=application/x-java-serialized-object 时,是否允许 java serialization。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| headerFilterStrategy (filter) | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。 | HeaderFilterStrategy | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Atmosphere Websocket 端点使用 URI 语法配置:
atmosphere-websocket:servicePath
atmosphere-websocket:servicePath
使用以下路径和查询参数:
11.1.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| servicePath | websocket 端点 所需的 名称 | 字符串 |
11.1.2. 查询参数(38 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| chunked (common) | 如果这个选项为 false,则 Servlet 将禁用 HTTP 流并在响应上设置内容长度的标头 | true | 布尔值 |
| disableStreamCache (common) | 确定 Servlet 的原始输入流是否已缓存(Camel 将读取流到文件,流缓存)缓存。默认情况下,Camel 会缓存 Servlet 输入流,以支持多次读取它,以确保 Camel 可以从流检索所有数据。但是,当您需要访问原始流(如直接流传输到文件或其他持久性存储)时,您可以将这个选项设置为 true。DefaultHttpBinding 会将请求输入流复制到流缓存中,如果这个选项为 false,则会将其放入消息正文,以便支持多次读取流。如果使用 Servlet 桥接/代理端点,请考虑启用这个选项来提高性能,如果不需要多次读取消息有效负载。http/http4 producer 默认将缓存响应正文流。如果将此选项设置为 true,则生产者不会缓存响应正文流,而是使用响应流,作为消息正文。 | false | 布尔值 |
| headerFilterStrategy (common) | 使用自定义 HeaderFilterStrategy 过滤来自 Camel 消息的标头。 | HeaderFilterStrategy | |
| sendToAll (common) | 是否发送到所有(广播)还是发送到单个接收器。 | false | 布尔值 |
| transferException (common) | 如果对使用者端启用和交换失败处理,并且如果导致的例外在响应中作为应用程序/x-java-serialized-object 内容类型发送回序列化,则进行后定。在制作者端,异常会按原样进行反序列化和丢弃,而不是 HttpOperationFailedException。导致的异常需要被序列化。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| useStreaming (common) | 要启用流将数据作为多个文本片段发送。 | false | 布尔值 |
| httpBinding (common) | 使用自定义 HttpBinding 控制 Camel 消息和 HttpClient 之间的映射。 | HttpBinding | |
| async (consumer) | 将消费者配置为以同步模式工作 | false | 布尔值 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| httpMethodRestrict (consumer) | 仅用于允许消耗 HttpMethod 匹配,如 GET/POST/PUT 等。可以使用逗号分隔多个方法。 | 字符串 | |
| matchOnUriPrefix (consumer) | 如果找不到完全匹配,则使用者是否应该尝试通过匹配 URI 前缀来查找目标使用者。 | false | 布尔值 |
| responseBufferSize (consumer) | 使用 javax.servlet.ServletResponse 的自定义缓冲区大小。 | 整数 | |
| servletName (consumer) | 要使用的 servlet 的名称 | CamelServlet | 字符串 |
| attachmentMultipartBinding (consumer) | 是否会在 Camel Exchange 上自动绑定多部分/信息数据作为附件。选项附加MultipartBinding=true 和 disableStreamCache=false 无法一起工作。删除 disableStreamCache 以使用 AttachmentMultipartBinding。这将默认关闭,因为这可能需要 servlet 特定配置在使用 Servlet 时启用此功能。 | false | 布尔值 |
| eagerCheckContentAvailable (consumer) | 是否预先检查 HTTP 请求是否有内容(如果 content-length 标头为 0 )是否有内容。这可在问题单中打开 HTTP 客户端不会发送流化数据。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| fileNameExtWhitelist (consumer) | 接受上传的文件的接受文件名扩展白名单。多个扩展可以通过逗号分隔,如 txt,xml。 | 字符串 | |
| optionsEnabled (consumer) | 指定是否为这个 Servlet consumer 启用 HTTP OPTIONS。默认情况下,OPTIONS 会被关闭。 | false | 布尔值 |
| traceEnabled (consumer) | 指定是否为这个 Servlet consumer 启用 HTTP TRACE。默认关闭 TRACE。 | false | 布尔值 |
| bridgeEndpoint (producer) | 如果 选项为 true,HttpProducer 将忽略 Exchange.HTTP_URI 标头,并使用端点的 URI 请求。您也可以将选项 throwExceptionOnFailure 设为 false,使 HttpProducer 发送所有故障响应。 | false | 布尔值 |
| connectionClose (producer) | 指定是否需要将 Connection Close 标头添加到 HTTP Request 中。默认情况下 connectionClose 为 false。 | false | 布尔值 |
| copyHeaders (producer) | 如果这个选项为 true,则根据复制策略将 IN Exchange 标头复制到 OUT Exchange 标头。将其设置为 false,仅允许包括 HTTP 响应中的标头(不会传播 IN 标头)。 | true | 布尔值 |
| httpMethod (producer) | 配置要使用的 HTTP 方法。如果设置,HttpMethod 标头无法覆盖这个选项。 | HttpMethods | |
| ignoreResponseBody (producer) | 如果这个选项为 true,则 http producer 不会读取响应正文并缓存输入流 | false | 布尔值 |
| preserveHostHeader (producer) | 如果选项为 true,HttpProducer 会将 Host 标头设置为当前交换主机标头中包含的值,对于您希望下游服务器收到的主机标头,可以使用 Host 标头为代理应用程序生成准确的 URL。 | false | 布尔值 |
| throwExceptionOnFailure (producer) | 禁用丢弃 HttpOperationFailedException 的选项(如果来自远程服务器的响应失败)。这可让您获得所有响应,无论 HTTP 状态代码如何。 | true | 布尔值 |
| cookieHandler (producer) | 配置 Cookie 处理程序以维护 HTTP 会话 | CookieHandler | |
| okStatusCodeRange (producer) | 被视为成功响应的状态代码。值包括:可以定义多个范围,以逗号分隔,例如 200-204,209,301-304。每个范围必须是单个数字,或使用包括横线的短划线。 | 200-299 | 字符串 |
| urlRewrite (producer) | 弃用了 自定义的 org.apache.camel.component.http.UrlRewrite,它允许您在网桥/proxy 端点时重写 url。更多信息请参阅 http://camel.apache.org/urlrewrite.html | UrlRewrite | |
| mapHttpMessageBody (advanced) | 如果此选项正确,则交换正文将映射到 HTTP 正文。将其设置为 false 将避免 HTTP 映射。 | true | 布尔值 |
| mapHttpMessageFormUrl EncodedBody (advanced) | 如果这个选项为 true,则交换的 IN Exchange Form Encode 正文将映射到 HTTP。将其设置为 false 可以避免 HTTP Form Encoded body 映射。 | true | 布尔值 |
| mapHttpMessageHeaders (advanced) | 如果此选项为 true,则交换的 IN Exchange Headers 将映射到 HTTP 标头。将其设置为 false 将避免 HTTP 标头映射。 | true | 布尔值 |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| proxyAuthScheme (proxy) | 要使用的代理身份验证方案 | 字符串 | |
| proxyHost (proxy) | 要使用的代理主机名 | 字符串 | |
| proxyPort (proxy) | 要使用的代理端口 | int | |
| authHost (security) | 要用于 NTML 的身份验证主机 | 字符串 |
11.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 10 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atmosphere-websocket.allow-java-serialized-object | 请求使用 context-type=application/x-java-serialized-object 时,是否允许 java serialization。默认情况下关闭。如果您启用此功能,Java 将把传入的数据从请求中反序列化为 Java,这可能会成为潜在的安全风险。 | false | 布尔值 |
| camel.component.atmosphere-websocket.attachment-multipart-binding | 是否会在 Camel Exchange 上自动绑定多部分/信息数据作为附件。选项附加MultipartBinding=true 和 disableStreamCache=false 无法一起工作。删除 disableStreamCache 以使用 AttachmentMultipartBinding。这将默认关闭,因为这可能需要 servlet 特定配置在使用 Servlet 时启用此功能。 | false | 布尔值 |
| camel.component.atmosphere-websocket.enabled | 启用 atmosphere-websocket 组件 | true | 布尔值 |
| camel.component.atmosphere-websocket.file-name-ext-whitelist | 接受上传的文件的接受文件名扩展白名单。多个扩展可以通过逗号分隔,如 txt,xml。 | 字符串 | |
| camel.component.atmosphere-websocket.header-filter-strategy | 使用自定义 org.apache.camel.spi.HeaderFilterStrategy 过滤来自 Camel 消息的标头。选项是一个 org.apache.camel.spi.HeaderFilterStrategy 类型。 | 字符串 | |
| camel.component.atmosphere-websocket.http-binding | 使用自定义 HttpBinding 控制 Camel 消息和 HttpClient 之间的映射。选项是一个 org.apache.camel.http.common.HttpBinding 类型。 | 字符串 | |
| camel.component.atmosphere-websocket.http-configuration | 使用共享 HttpConfiguration 作为基本配置。选项是一个 org.apache.camel.http.common.HttpConfiguration 类型。 | 字符串 | |
| camel.component.atmosphere-websocket.http-registry | 使用自定义 org.apache.camel.component.servlet.HttpRegistry。选项是一个 org.apache.camel.component.servlet.HttpRegistry 类型。 | 字符串 | |
| camel.component.atmosphere-websocket.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.atmosphere-websocket.servlet-name | 要使用的默认 servlet 名称。默认名称为 CamelServlet。 | CamelServlet | 字符串 |
11.3. URI 格式 复制链接链接已复制到粘贴板!
atmosphere-websocket:///relative path[?options]
atmosphere-websocket:///relative path[?options]
11.4. 通过 Websocket 读取和编写数据 复制链接链接已复制到粘贴板!
atmopshere-websocket 端点可以分别将数据写入套接字或从套接字读取数据,具体取决于端点是否配置为制作者还是消费者。
11.5. 将 URI 配置为读或写数据 复制链接链接已复制到粘贴板!
在以下路由中,Camel 会从指定的 websocket 连接中读取。
from("atmosphere-websocket:///servicepath")
.to("direct:next");
from("atmosphere-websocket:///servicepath")
.to("direct:next");
以及对等的 Spring 示例:
在以下路由中,Camel 会从指定的 websocket 连接中读取。
from("direct:next")
.to("atmosphere-websocket:///servicepath");
from("direct:next")
.to("atmosphere-websocket:///servicepath");
以及对等的 Spring 示例:
11.6. 另请参阅 复制链接链接已复制到粘贴板!
第 12 章 Atom 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 1.2 提供
atom: component 用于轮询 Atom 源。
默认情况下,Camel 将每 60 秒轮询一次源。
注: 这些组件目前仅支持轮询(耗时)源。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
12.1. URI 格式 复制链接链接已复制到粘贴板!
atom://atomUri[?options]
atom://atomUri[?options]
其中,atomUri 是要轮询的 Atom 源的 URI。
12.2. 选项 复制链接链接已复制到粘贴板!
Atom 组件没有选项。
Atom 端点使用 URI 语法配置:
atom:feedUri
atom:feedUri
使用以下路径和查询参数:
12.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| feedUri | 需要 要轮询的源 URI。 | 字符串 |
12.2.2. 查询参数(27 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| feedHeader (consumer) | 设置是否将 feed 对象添加为标头 | true | 布尔值 |
| filter (consumer) | 设定是否使用过滤,还是不是条目。 | true | 布尔值 |
| lastUpdate (consumer) | 设置用于从 atom feeds 过滤条目的时间戳。这个选项只与 splitEntries 结合使用。 | Date | |
| password (consumer) | 设置 HTTP 源轮询时用于基本身份验证的密码 | 字符串 | |
| sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。 | false | 布尔值 |
| sortEntries (consumer) | 设定是否按公布的日期对条目进行排序。仅在 splitEntries = true 时才起作用。 | false | 布尔值 |
| splitEntries (consumer) | 设置是否应单独发送条目,还是应将整个源作为单个消息发送 | true | 布尔值 |
| throttleEntries (consumer) | 设定是否应立即发送单一源轮询中的所有条目。如果为 true,则每个 consumer.delay 只处理一个条目。仅在 splitEntries = true 时才适用。 | true | 布尔值 |
| username (consumer) | 设置 HTTP 源轮询时用于基本身份验证的用户名 | 字符串 | |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| pollStrategy (consumer) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。 | PollingConsumerPoll Strategy | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| backoffErrorThreshold (scheduler) | 后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。 | int | |
| backoffIdleThreshold (scheduler) | 后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。 | int | |
| backoffMultiplier (scheduler) | 如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。 | int | |
| 延迟 (scheduler) | 下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 500 | long |
| greedy (scheduler) | 如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。 | false | 布尔值 |
| initialDelay (scheduler) | 第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 1000 | long |
| runLoggingLevel (scheduler) | 消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。 | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。 | ScheduledExecutor 服务 | |
| 调度程序 (scheduler) | 使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序 | none | ScheduledPollConsumer Scheduler |
| schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。 | map | |
| startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
| timeUnit (scheduler) | 初始延迟和延迟选项的时间单位。 | 毫秒 | TimeUnit |
| useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
12.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 2 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atom.enabled | 启用 atom 组件 | true | 布尔值 |
| camel.component.atom.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…
12.4. 交换数据格式 复制链接链接已复制到粘贴板!
Camel 将在返回的 Exchange 上通过条目设置 In 正文。根据 splitEntries 标记 Camel 将返回一个 Entry 或 List<Entry>。
| 选项 | 值 | 行为 |
|---|---|---|
|
|
|
只设置来自当前处理源的一个条目: Exchange. |
|
|
|
源中的整个条目列表被设置: |
Camel 可以在 In 标头上设置 Feed 对象(请参阅 feedHeader 选项来禁用此选项):
12.5. 消息标头 复制链接链接已复制到粘贴板!
Camel atom 使用这些标头。
| 标头 | 描述 |
|---|---|
|
|
当使用 |
12.6. Samples 复制链接链接已复制到粘贴板!
在本例中,我们轮询 James Strachan 的博客。
from("atom://http://macstrac.blogspot.com/feeds/posts/default").to("seda:feeds");
from("atom://http://macstrac.blogspot.com/feeds/posts/default").to("seda:feeds");
在此例中,我们希望仅过滤我们想到 SEDA 队列的良好博客。这个示例还演示了如何设置 Camel 独立,而不在任何容器或 Spring 中运行。
12.7. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- RSS
第 13 章 Atomix Map 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
camel atomix-map 组件允许您使用 Atomix 的 分布式 map 集合。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
13.1. URI 格式 复制链接链接已复制到粘贴板!
atomix-map:mapName
atomix-map:mapName
13.2. 选项 复制链接链接已复制到粘贴板!
Atomix Map 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| configuration (common) | 共享组件配置 | AtomixMapConfiguration | |
| atomix (common) | 共享 AtomixClient 实例 | AtomixClient | |
| nodes (common) | AtomixClient 的节点应连接到 | list | |
| configurationUri (common) | AtomixClient 配置的路径 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Atomix Map 端点使用 URI 语法进行配置:
atomix-map:resourceName
atomix-map:resourceName
使用以下路径和查询参数:
13.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| resourceName | 所需的 分布式资源名称 | 字符串 |
13.2.2. 查询参数(18 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| atomix (common) | 要使用的 Atomix 实例 | Atomix | |
| configurationUri (common) | Atomix 配置 uri. | 字符串 | |
| defaultAction (common) | 默认操作。 | PUT | 操作 |
| key (common) | 如果标头中没有设置任何设置或者监听特定密钥的事件,要使用的密钥。 | 对象 | |
| nodes (common) | 组成集群的节点地址。 | 字符串 | |
| resultHeader (common) | wil 执行结果的标头。 | 字符串 | |
| transport (common) | 设置 Atomix 传输。 | io.atomix.catalyst.transport.netty.NettyTransport | 传输 |
| ttl (common) | 资源 ttl。 | long | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| defaultResourceConfig (advanced) | 集群范围内的默认资源配置。 | Properties | |
| defaultResourceOptions (advanced) | 本地默认资源选项。 | Properties | |
| ephemeral (advanced) | 如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。 | false | 布尔值 |
| readConsistency (advanced) | 读取一致性级别。 | ReadConsistency | |
| resourceConfigs (advanced) | 集群范围内的资源配置。 | map | |
| resourceOptions (advanced) | 本地资源配置 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
13.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 9 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atomix-map.atomix | 共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。 | 字符串 | |
| camel.component.atomix-map.configuration-uri | AtomixClient 配置的路径 | 字符串 | |
| camel.component.atomix-map.configuration.default-action | 默认操作。 | AtomixMap$Action | |
| camel.component.atomix-map.configuration.key | 如果标头中没有设置任何设置或者监听特定密钥的事件,要使用的密钥。 | 对象 | |
| camel.component.atomix-map.configuration.result-header | wil 执行结果的标头。 | 字符串 | |
| camel.component.atomix-map.configuration.ttl | 资源 ttl。 | Long | |
| camel.component.atomix-map.enabled | 是否启用 atomix-map 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.atomix-map.nodes | AtomixClient 的节点应连接到 | list | |
| camel.component.atomix-map.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
13.4. Headers 复制链接链接已复制到粘贴板!
| 名称 | 类型 | 值 | 描述 |
|---|---|---|---|
| CamelAtomixResourceAction | AtomixMap.Action |
| 要执行的操作 |
| CamelAtomixResourceKey | 对象 | - | 要操作的密钥 |
| CamelAtomixResourceValue | 对象 | - | 如果使用了 In Body,则该值 |
| CamelAtomixResourceOldValue | 对象 | - | 旧值 |
| CamelAtomixResourceTTL | 字符串/长 | - | 条目 TTL |
| CamelAtomixResourceReadConsistency | ReadConsistency |
| 读取一致性级别 |
13.5. 配置组件以连接到 Atomix 集群 复制链接链接已复制到粘贴板!
要加入的 Atomix 集群的节点可以是 Endpoint 或组件级别(推荐),如下一些示例:
endpoint:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 组件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.6. 使用示例: 复制链接链接已复制到粘贴板!
PUT 是一个带有 1 秒的 TTL 的元素:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 14 章 Atomix Messaging 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
通过 camel atomix-messaging 组件,您可以使用 Atomix 的组 消息传递 。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
14.1. URI 格式 复制链接链接已复制到粘贴板!
atomix-messaging:group
atomix-messaging:group
Atomix Messaging 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| configuration (common) | 共享组件配置 | AtomixMessaging 配置 | |
| atomix (common) | 共享 AtomixClient 实例 | AtomixClient | |
| nodes (common) | AtomixClient 的节点应连接到 | list | |
| configurationUri (common) | AtomixClient 配置的路径 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Atomix Messaging 端点使用 URI 语法进行配置:
atomix-messaging:resourceName
atomix-messaging:resourceName
使用以下路径和查询参数:
14.1.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| resourceName | 所需的 分布式资源名称 | 字符串 |
14.1.2. 查询参数(19 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| atomix (common) | 要使用的 Atomix 实例 | Atomix | |
| broadcastType (common) | 广播类型。 | ALL | BroadcastType |
| channelName (common) | 消息传递频道名称 | 字符串 | |
| configurationUri (common) | Atomix 配置 uri. | 字符串 | |
| defaultAction (common) | 默认操作。 | 直接 | 操作 |
| memberName (common) | Atomix 组成员名称 | 字符串 | |
| nodes (common) | 组成集群的节点地址。 | 字符串 | |
| resultHeader (common) | wil 执行结果的标头。 | 字符串 | |
| transport (common) | 设置 Atomix 传输。 | io.atomix.catalyst.transport.netty.NettyTransport | 传输 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| defaultResourceConfig (advanced) | 集群范围内的默认资源配置。 | Properties | |
| defaultResourceOptions (advanced) | 本地默认资源选项。 | Properties | |
| ephemeral (advanced) | 如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。 | false | 布尔值 |
| readConsistency (advanced) | 读取一致性级别。 | ReadConsistency | |
| resourceConfigs (advanced) | 集群范围内的资源配置。 | map | |
| resourceOptions (advanced) | 本地资源配置 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
14.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 10 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atomix-messaging.atomix | 共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。 | 字符串 | |
| camel.component.atomix-messaging.configuration-uri | AtomixClient 配置的路径 | 字符串 | |
| camel.component.atomix-messaging.configuration.broadcast-type | 广播类型。 | AtomixMessaging$ BroadcastType | |
| camel.component.atomix-messaging.configuration.channel-name | 消息传递频道名称 | 字符串 | |
| camel.component.atomix-messaging.configuration.default-action | 默认操作。 | AtomixMessaging$Action | |
| camel.component.atomix-messaging.configuration.member-name | Atomix 组成员名称 | 字符串 | |
| camel.component.atomix-messaging.configuration.result-header | wil 执行结果的标头。 | 字符串 | |
| camel.component.atomix-messaging.enabled | 是否启用 atomix-messaging 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.atomix-messaging.nodes | AtomixClient 的节点应连接到 | list | |
| camel.component.atomix-messaging.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
第 15 章 Atomix MultiMap 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
camel atomix-multimap 组件允许您使用 Atomix 的 分布式 MultiMap 集合。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
15.1. URI 格式 复制链接链接已复制到粘贴板!
atomix-multimap:multiMapName
atomix-multimap:multiMapName
Atomix MultiMap 组件支持 5 选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (消费者) | 共享组件配置 | AtomixMultiMap 配置 | |
| atomix (consumer) | 共享 AtomixClient 实例 | AtomixClient | |
| nodes (consumer) | AtomixClient 的节点应连接到 | list | |
| configurationUri (consumer) | AtomixClient 配置的路径 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Atomix MultiMap 端点使用 URI 语法配置:
atomix-multimap:resourceName
atomix-multimap:resourceName
使用以下路径和查询参数:
15.1.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| resourceName | 所需的 分布式资源名称 | 字符串 |
15.1.2. 查询参数(18 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| atomix (consumer) | 要使用的 Atomix 实例 | Atomix | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| configurationUri (consumer) | Atomix 配置 uri. | 字符串 | |
| defaultAction (consumer) | 默认操作。 | PUT | 操作 |
| 密钥 (消费者) | 如果标头中没有设置任何设置或者监听特定密钥的事件,要使用的密钥。 | 对象 | |
| nodes (consumer) | 组成集群的节点地址。 | 字符串 | |
| resultHeader (consumer) | wil 执行结果的标头。 | 字符串 | |
| transport (consumer) | 设置 Atomix 传输。 | io.atomix.catalyst.transport.netty.NettyTransport | 传输 |
| ttl (consumer) | 资源 ttl。 | long | |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| defaultResourceConfig (advanced) | 集群范围内的默认资源配置。 | Properties | |
| defaultResourceOptions (advanced) | 本地默认资源选项。 | Properties | |
| ephemeral (advanced) | 如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。 | false | 布尔值 |
| readConsistency (advanced) | 读取一致性级别。 | ReadConsistency | |
| resourceConfigs (advanced) | 集群范围内的资源配置。 | map | |
| resourceOptions (advanced) | 本地资源配置 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
15.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 9 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atomix-multimap.atomix | 共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。 | 字符串 | |
| camel.component.atomix-multimap.configuration-uri | AtomixClient 配置的路径 | 字符串 | |
| camel.component.atomix-multimap.configuration.default-action | 默认操作。 | AtomixMultiMap$Action | |
| camel.component.atomix-multimap.configuration.key | 如果标头中没有设置任何设置或者监听特定密钥的事件,要使用的密钥。 | 对象 | |
| camel.component.atomix-multimap.configuration.result-header | wil 执行结果的标头。 | 字符串 | |
| camel.component.atomix-multimap.configuration.ttl | 资源 ttl。 | Long | |
| camel.component.atomix-multimap.enabled | 是否启用 atomix-multimap 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.atomix-multimap.nodes | AtomixClient 的节点应连接到 | list | |
| camel.component.atomix-multimap.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
第 16 章 Atomix 队列组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
camel atomix-queue 组件允许您使用 Atomix 的 分布式队列 集合。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
16.1. URI 格式 复制链接链接已复制到粘贴板!
atomix-queue:queueName
atomix-queue:queueName
Atomix Queue 组件支持 5 个选项,它们列在下方。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| configuration (common) | 共享组件配置 | AtomixQueue Configuration | |
| atomix (common) | 共享 AtomixClient 实例 | AtomixClient | |
| nodes (common) | AtomixClient 的节点应连接到 | list | |
| configurationUri (common) | AtomixClient 配置的路径 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Atomix Queue 端点使用 URI 语法进行配置:
atomix-queue:resourceName
atomix-queue:resourceName
使用以下路径和查询参数:
16.1.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| resourceName | 所需的 分布式资源名称 | 字符串 |
16.1.2. 查询参数(16 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| atomix (common) | 要使用的 Atomix 实例 | Atomix | |
| configurationUri (common) | Atomix 配置 uri. | 字符串 | |
| defaultAction (common) | 默认操作。 | 添加 | 操作 |
| nodes (common) | 组成集群的节点地址。 | 字符串 | |
| resultHeader (common) | wil 执行结果的标头。 | 字符串 | |
| transport (common) | 设置 Atomix 传输。 | io.atomix.catalyst.transport.netty.NettyTransport | 传输 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| defaultResourceConfig (advanced) | 集群范围内的默认资源配置。 | Properties | |
| defaultResourceOptions (advanced) | 本地默认资源选项。 | Properties | |
| ephemeral (advanced) | 如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。 | false | 布尔值 |
| readConsistency (advanced) | 读取一致性级别。 | ReadConsistency | |
| resourceConfigs (advanced) | 集群范围内的资源配置。 | map | |
| resourceOptions (advanced) | 本地资源配置 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
16.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 7 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atomix-queue.atomix | 共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。 | 字符串 | |
| camel.component.atomix-queue.configuration-uri | AtomixClient 配置的路径 | 字符串 | |
| camel.component.atomix-queue.configuration.default-action | 默认操作。 | AtomixQueue$Action | |
| camel.component.atomix-queue.configuration.result-header | wil 执行结果的标头。 | 字符串 | |
| camel.component.atomix-queue.enabled | 是否启用 atomix-queue 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.atomix-queue.nodes | AtomixClient 的节点应连接到 | list | |
| camel.component.atomix-queue.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
第 17 章 Atomix Set Component 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
camel atomix-set 组件允许您使用 Atomix 的 分布式集合。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
17.1. URI 格式 复制链接链接已复制到粘贴板!
atomix-set:setName
atomix-set:setName
Atomix Set 组件支持 5 个选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| configuration (common) | 共享组件配置 | AtomixSetConfiguration | |
| atomix (common) | 共享 AtomixClient 实例 | AtomixClient | |
| nodes (common) | AtomixClient 的节点应连接到 | list | |
| configurationUri (common) | AtomixClient 配置的路径 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Atomix Set 端点使用 URI 语法进行配置:
atomix-set:resourceName
atomix-set:resourceName
使用以下路径和查询参数:
17.1.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| resourceName | 所需的 分布式资源名称 | 字符串 |
17.1.2. 查询参数(17 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| atomix (common) | 要使用的 Atomix 实例 | Atomix | |
| configurationUri (common) | Atomix 配置 uri. | 字符串 | |
| defaultAction (common) | 默认操作。 | 添加 | 操作 |
| nodes (common) | 组成集群的节点地址。 | 字符串 | |
| resultHeader (common) | wil 执行结果的标头。 | 字符串 | |
| transport (common) | 设置 Atomix 传输。 | io.atomix.catalyst.transport.netty.NettyTransport | 传输 |
| ttl (common) | 资源 ttl。 | long | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| defaultResourceConfig (advanced) | 集群范围内的默认资源配置。 | Properties | |
| defaultResourceOptions (advanced) | 本地默认资源选项。 | Properties | |
| ephemeral (advanced) | 如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。 | false | 布尔值 |
| readConsistency (advanced) | 读取一致性级别。 | ReadConsistency | |
| resourceConfigs (advanced) | 集群范围内的资源配置。 | map | |
| resourceOptions (advanced) | 本地资源配置 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
17.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 8 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atomix-set.atomix | 共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。 | 字符串 | |
| camel.component.atomix-set.configuration-uri | AtomixClient 配置的路径 | 字符串 | |
| camel.component.atomix-set.configuration.default-action | 默认操作。 | AtomixSet$Action | |
| camel.component.atomix-set.configuration.result-header | wil 执行结果的标头。 | 字符串 | |
| camel.component.atomix-set.configuration.ttl | 资源 ttl。 | Long | |
| camel.component.atomix-set.enabled | 是否启用 atomix-set 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.atomix-set.nodes | AtomixClient 的节点应连接到 | list | |
| camel.component.atomix-set.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
第 18 章 Atomix Value 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
camel atomix-value 组件允许您使用 Atomix 的 分布式值。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-atomix</artifactId>
<version>${camel-version}</version>
</dependency>
18.1. URI 格式 复制链接链接已复制到粘贴板!
atomix-value:valueName
atomix-value:valueName
Atomix Value 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| configuration (common) | 共享组件配置 | AtomixValue Configuration | |
| atomix (common) | 共享 AtomixClient 实例 | AtomixClient | |
| nodes (common) | AtomixClient 的节点应连接到 | list | |
| configurationUri (common) | AtomixClient 配置的路径 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Atomix Value 端点使用 URI 语法进行配置:
atomix-value:resourceName
atomix-value:resourceName
使用以下路径和查询参数:
18.1.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| resourceName | 所需的 分布式资源名称 | 字符串 |
18.1.2. 查询参数(17 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| atomix (common) | 要使用的 Atomix 实例 | Atomix | |
| configurationUri (common) | Atomix 配置 uri. | 字符串 | |
| defaultAction (common) | 默认操作。 | SET | 操作 |
| nodes (common) | 组成集群的节点地址。 | 字符串 | |
| resultHeader (common) | wil 执行结果的标头。 | 字符串 | |
| transport (common) | 设置 Atomix 传输。 | io.atomix.catalyst.transport.netty.NettyTransport | 传输 |
| ttl (common) | 资源 ttl。 | long | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| defaultResourceConfig (advanced) | 集群范围内的默认资源配置。 | Properties | |
| defaultResourceOptions (advanced) | 本地默认资源选项。 | Properties | |
| ephemeral (advanced) | 如果本地成员应该将组作为 PersistentMember 加入到组中,则设置。如果设置为临时,本地成员将接收自动生成的 ID,则忽略本地 ID。 | false | 布尔值 |
| readConsistency (advanced) | 读取一致性级别。 | ReadConsistency | |
| resourceConfigs (advanced) | 集群范围内的资源配置。 | map | |
| resourceOptions (advanced) | 本地资源配置 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
18.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 8 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.atomix-value.atomix | 共享 AtomixClient 实例。选项是一个 io.atomix.AtomixClient 类型。 | 字符串 | |
| camel.component.atomix-value.configuration-uri | AtomixClient 配置的路径 | 字符串 | |
| camel.component.atomix-value.configuration.default-action | 默认操作。 | AtomixValue$Action | |
| camel.component.atomix-value.configuration.result-header | wil 执行结果的标头。 | 字符串 | |
| camel.component.atomix-value.configuration.ttl | 资源 ttl。 | Long | |
| camel.component.atomix-value.enabled | 是否启用 atomix-value 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.atomix-value.nodes | AtomixClient 的节点应连接到 | list | |
| camel.component.atomix-value.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
第 19 章 Avro Component 复制链接链接已复制到粘贴板!
作为 Camel 2.10 版本提供
此组件为 avro 提供数据格式,允许使用 Apache Avro 的二进制数据格式对消息的序列化和反序列化化。此外,它还通过提供生产者和消费者端点(通过 netty 或 http),为 Apache Avro 的 rpc 提供支持。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
19.1. Apache Avro 概述 复制链接链接已复制到粘贴板!
Avro 允许您使用 json 等格式定义消息类型和协议,然后为指定类型和消息生成 java 代码。下面是一个 schema 的示例。
您可以使用 maven 和 ant 等模式轻松生成类。如需更多详细信息,请参阅 Apache Avro 文档。
但是,它不强制采用一种模式,而且您可以为现有类创建 schema。自 2.12 开始,您可以使用现有协议接口发出 RCP 调用。您应该为协议本身使用接口,POJO Bean 或原语/字符串类用于参数和结果类型。下面是与上述 schema 对应的类示例:
注:现有类只能用于 RPC (请参阅以下),而不是数据格式。
19.2. 使用 Avro 数据格式 复制链接链接已复制到粘贴板!
使用 avro 数据格式非常简单,就像指定您希望在路由中总结或 unmarshal 的类一样容易。
另一种方法是指定上下文内的数据格式,并从您的路由引用它。
同样,您可以使用 avro 数据格式进行 umarshal。
19.3. 在 Camel 中使用 Avro RPC 复制链接链接已复制到粘贴板!
如 Avro 上方所述,它还通过多种传输提供 RPC 支持,如 http 和 netty。Camel 为这两种传输提供使用者和制作者。
avro:[transport]:[host]:[port][?options]
avro:[transport]:[host]:[port][?options]
支持的传输值当前为 http 或 netty。
由于 2.12,您可以在 URI 右侧指定消息名称:
avro:[transport]:[host]:[port][/messageName][?options]
avro:[transport]:[host]:[port][/messageName][?options]
对于消费者,您可以有多个连接到同一套接字的路由。给正确的路由分配由 avro 组件自动进行。未指定 messageName 的路由(若有)将用作默认值。
当为 avro ipc 使用 camel producers 时,"in"消息正文需要包含 avro 协议中指定的操作参数。该响应将在"out"消息的正文中添加。
在为 avro ipc 使用 camel avro 消费者时,请求参数将放置在所创建交换的"内"消息正文并且处理"out"消息的正文后,将作为响应发送。
注: 默认情况下,使用者参数被嵌套到阵列中。如果您只有一个参数,因为 2.12 您可以使用 singleParameter URI 选项在 "in" 消息正文中接收它,而无需数组嵌套。
19.4. Avro RPC URI 选项 复制链接链接已复制到粘贴板!
Avro 组件支持 2 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | 使用共享的 AvroConfiguration 一次配置选项 | AvroConfiguration | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Avro 端点使用 URI 语法进行配置:
avro:transport:host:port/messageName
avro:transport:host:port/messageName
使用以下路径和查询参数:
19.4.1. 路径名(4 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 传输 | 要使用 所需的 传输,可以是 http 或 netty | AvroTransport | |
| port | 要使用 所需的 端口号 | int | |
| 主机 | 要使用 所需的 主机名 | 字符串 | |
| messageName | 要发送的消息的名称。 | 字符串 |
19.4.2. 查询参数(10 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| protocol (common) | 要使用的 Avro 协议 | 协议 | |
| protocolClassName (common) | Avro 协议使用 FQN 类名称定义 | 字符串 | |
| protocolLocation (common) | Avro 协议位置 | 字符串 | |
| reflectionProtocol (common) | 如果提供的协议对象被反映为协议。应该只与 protocol 参数一起使用,因为用于 protocolClassName 协议类型将被自动检测 | false | 布尔值 |
| singleParameter (common) | 如果为 true,则消费者参数将不会嵌套到阵列中。如果协议为消息指定了更多,则 1 参数将失败 | false | 布尔值 |
| uriAuthority (common) | 使用授权(用户名和密码) | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
19.5. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 15 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.avro.configuration.host | 要使用的主机名 | 字符串 | |
| camel.component.avro.configuration.message-name | 要发送的消息的名称。 | 字符串 | |
| camel.component.avro.configuration.port | 要使用的端口号 | 整数 | |
| camel.component.avro.configuration.protocol | 要使用的 Avro 协议 | 协议 | |
| camel.component.avro.configuration.protocol-class-name | Avro 协议使用 FQN 类名称定义 | 字符串 | |
| camel.component.avro.configuration.protocol-location | Avro 协议位置 | 字符串 | |
| camel.component.avro.configuration.reflection-protocol | 如果提供的协议对象被反映为协议。应该只与 protocol 参数一起使用,因为用于 protocolClassName 协议类型将被自动检测 | false | 布尔值 |
| camel.component.avro.configuration.single-parameter | 如果为 true,则消费者参数将不会嵌套到阵列中。如果协议为消息指定了更多,则 1 参数将失败 | false | 布尔值 |
| camel.component.avro.configuration.transport | 要使用的传输,可以是 http 或 netty | AvroTransport | |
| camel.component.avro.configuration.uri-authority | 使用授权(用户名和密码) | 字符串 | |
| camel.component.avro.enabled | 启用 avro 组件 | true | 布尔值 |
| camel.component.avro.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.dataformat.avro.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.avro.enabled | 启用 avro dataformat | true | 布尔值 |
| camel.dataformat.avro.instance-class-name | 用于 marshal 和 unmarshalling 的类名称 | 字符串 |
19.6. Avro RPC 标头 复制链接链接已复制到粘贴板!
| 名称 | 描述 |
|---|---|
|
| 要发送的消息的名称。在消费者中,从 URI 覆盖消息名称(若有) |
19.7. 例子 复制链接链接已复制到粘贴板!
通过 http 的 camel avro producer 示例:
<route>
<from uri="direct:start"/>
<to uri="avro:http:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
<to uri="log:avro"/>
</route>
<route>
<from uri="direct:start"/>
<to uri="avro:http:localhost:{{avroport}}?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
<to uri="log:avro"/>
</route>
在上面的示例中,您需要填写 CamelAvroMessageName 标头。从 2.12 开始,您可以使用以下语法来调用恒定信息:
<route>
<from uri="direct:start"/>
<to uri="avro:http:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
<to uri="log:avro"/>
</route>
<route>
<from uri="direct:start"/>
<to uri="avro:http:localhost:{{avroport}}/put?protocolClassName=org.apache.camel.avro.generated.KeyValueProtocol"/>
<to uri="log:avro"/>
</route>
使用 camel avro 用户通过 netty 消耗消息的示例:
由于 2.12,您可以设置两个不同的路由来执行相同的任务:
在上面的例子中,get 只使用一个参数,因此使用 singleParameter,而 getProcessor 将直接接收正文中的 Value 类,而 putProcessor 将收到大小 2,其值为 String key 和 value 值,并以数组内容填充。
第 20 章 Avro DataFormat 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.14 可用
此组件为 avro 提供数据格式,允许使用 Apache Avro 的二进制数据格式对消息的序列化和反序列化化。此外,它还通过提供生产者和消费者端点(通过 netty 或 http),为 Apache Avro 的 rpc 提供支持。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
20.1. Apache Avro 概述 复制链接链接已复制到粘贴板!
Avro 允许您使用 json 等格式定义消息类型和协议,然后为指定类型和消息生成 java 代码。下面是一个 schema 的示例。
您可以使用 maven 和 ant 等模式轻松生成类。如需更多详细信息,请参阅 Apache Avro 文档。
但是,它不强制采用一种模式,而且您可以为现有类创建 schema。自 2.12 开始,您可以使用现有协议接口发出 RCP 调用。您应该为协议本身使用接口,POJO Bean 或原语/字符串类用于参数和结果类型。下面是与上述 schema 对应的类示例:
注:现有类只能用于 RPC (请参阅以下),而不是数据格式。
20.2. 使用 Avro 数据格式 复制链接链接已复制到粘贴板!
使用 avro 数据格式非常简单,就像指定您希望在路由中总结或 unmarshal 的类一样容易。
另一种方法是指定上下文内的数据格式,并从您的路由引用它。
同样,您可以使用 avro 数据格式进行 umarshal。
20.3. Avro Dataformat 选项 复制链接链接已复制到粘贴板!
Avro 数据格式支持 2 个选项,它们如下。
| 名称 | 默认 | Java 类型 | 描述 |
|---|---|---|---|
| instanceClassName |
| 用于 marshal 和 unmarshalling 的类名称 | |
| contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 |
20.4. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 15 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.avro.configuration.host | 要使用的主机名 | 字符串 | |
| camel.component.avro.configuration.message-name | 要发送的消息的名称。 | 字符串 | |
| camel.component.avro.configuration.port | 要使用的端口号 | 整数 | |
| camel.component.avro.configuration.protocol | 要使用的 Avro 协议 | 协议 | |
| camel.component.avro.configuration.protocol-class-name | Avro 协议使用 FQN 类名称定义 | 字符串 | |
| camel.component.avro.configuration.protocol-location | Avro 协议位置 | 字符串 | |
| camel.component.avro.configuration.reflection-protocol | 如果提供的协议对象被反映为协议。应该只与 protocol 参数一起使用,因为用于 protocolClassName 协议类型将被自动检测 | false | 布尔值 |
| camel.component.avro.configuration.single-parameter | 如果为 true,则消费者参数将不会嵌套到阵列中。如果协议为消息指定了更多,则 1 参数将失败 | false | 布尔值 |
| camel.component.avro.configuration.transport | 要使用的传输,可以是 http 或 netty | AvroTransport | |
| camel.component.avro.configuration.uri-authority | 使用授权(用户名和密码) | 字符串 | |
| camel.component.avro.enabled | 启用 avro 组件 | true | 布尔值 |
| camel.component.avro.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.dataformat.avro.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.avro.enabled | 启用 avro dataformat | true | 布尔值 |
| camel.dataformat.avro.instance-class-name | 用于 marshal 和 unmarshalling 的类名称 | 字符串 |
ND
第 21 章 AWS CloudWatch 组件 复制链接链接已复制到粘贴板!
作为 Camel 2.11 版本提供
CW 组件允许将消息发送到 Amazon CloudWatch 指标。Amazon API 的实现由 AWS SDK 提供。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,并被签名才能使用 Amazon CloudWatch。如需更多信息,请参阅 Amazon CloudWatch。
21.1. URI 格式 复制链接链接已复制到粘贴板!
aws-cw://namespace[?options]
aws-cw://namespace[?options]
如果指标不存在,则会创建指标。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
21.2. URI 选项 复制链接链接已复制到粘贴板!
AWS CloudWatch 组件支持 5 个选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS CW 默认配置 | CwConfiguration | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | CW 客户端需要工作的区域 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS CloudWatch 端点使用 URI 语法进行配置:
aws-cw:namespace
aws-cw:namespace
使用以下路径和查询参数:
21.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| namespace | 所需的 指标命名空间 | 字符串 |
21.2.2. 查询参数(11 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonCwClient (producer) | 使用 AmazonCloudWatch 作为客户端 | AmazonCloudWatch | |
| name (producer) | 指标名称 | 字符串 | |
| proxyHost (producer) | 在实例化 CW 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 CW 客户端时定义代理端口 | 整数 | |
| region (producer) | CW 客户端需要工作的区域 | 字符串 | |
| timestamp (producer) | 指标时间戳 | Date | |
| unit (producer) | 指标单元 | 字符串 | |
| value (producer) | 指标值 | 双 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
21.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 16 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-cw.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-cw.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-cw.configuration.amazon-cw-client | 使用 AmazonCloudWatch 作为客户端 | AmazonCloudWatch | |
| camel.component.aws-cw.configuration.name | 指标名称 | 字符串 | |
| camel.component.aws-cw.configuration.namespace | 指标命名空间 | 字符串 | |
| camel.component.aws-cw.configuration.proxy-host | 在实例化 CW 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-cw.configuration.proxy-port | 在实例化 CW 客户端时定义代理端口 | 整数 | |
| camel.component.aws-cw.configuration.region | CW 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-cw.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-cw.configuration.timestamp | 指标时间戳 | Date | |
| camel.component.aws-cw.configuration.unit | 指标单元 | 字符串 | |
| camel.component.aws-cw.configuration.value | 指标值 | 双 | |
| camel.component.aws-cw.enabled | 启用 aws-cw 组件 | true | 布尔值 |
| camel.component.aws-cw.region | CW 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-cw.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-cw.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 CW 组件选项
您必须提供 Registry 中的 amazonCwClient 或您的 accessKey 和 secretKey 以访问 Amazon 的 CloudWatch。
21.4. 使用 复制链接链接已复制到粘贴板!
21.4.1. CW producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| Amazon CW 指标名称。 |
|
|
| Amazon CW 指标值。 |
|
|
| Amazon CW 指标单元。 |
|
|
| Amazon CW 指标命名空间。 |
|
|
| Amazon CW 指标时间戳。 |
|
|
| Camel 2.12: Amazon CW 指标度名称。 |
|
|
| Camel 2.12: Amazon CW 指标度值. |
|
|
| Camel 2.12: 维度名称和度量值的映射。 |
21.4.2. 高级 AmazonCloudWatch 配置 复制链接链接已复制到粘贴板!
如果需要更多对 AmazonCloudWatch 实例配置进行控制,您可以创建自己的实例,并从 URI 引用它:
from("direct:start")
.to("aws-cw://namepsace?amazonCwClient=#client");
from("direct:start")
.to("aws-cw://namepsace?amazonCwClient=#client");
#client 指的是 registry 中的 AmazonCloudWatch。
例如,如果您的 Camel 应用程序是在防火墙后面运行:
21.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.10 或更高版本)。
21.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 22 章 AWS DynamoDB Component 复制链接链接已复制到粘贴板!
作为 Camel 2.10 版本提供
DynamoDB 组件支持存储和检索来自 Amazon 的 DynamoDB 服务的数据。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,并被签名才能使用 Amazon DynamoDB。有关更多信息,请参见 Amazon DynamoDB。
22.1. URI 格式 复制链接链接已复制到粘贴板!
aws-ddb://domainName[?options]
aws-ddb://domainName[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
22.2. URI 选项 复制链接链接已复制到粘贴板!
AWS DynamoDB 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS DDB 默认配置 | DdbConfiguration | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | DDB 客户端需要工作的区域 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS DynamoDB 端点使用 URI 语法进行配置:
aws-ddb:tableName
aws-ddb:tableName
使用以下路径和查询参数:
22.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| tableName | 当前用于的表的名称。 | 字符串 |
22.2.2. 查询参数(13 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonDDBClient (producer) | 使用 AmazonDynamoDB 作为客户端 | AmazonDynamoDB | |
| consistentRead (producer) | 决定在读取数据时是否应强制执行强一致性。 | false | 布尔值 |
| keyAttributeName (producer) | 创建表时的属性名称 | 字符串 | |
| keyAttributeType (producer) | 创建表时的属性类型 | 字符串 | |
| operation (producer) | 要执行的操作 | PutItem | DdbOperations |
| proxyHost (producer) | 在实例化 DDB 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 DDB 客户端时定义代理端口 | 整数 | |
| readCapacity (producer) | 从表中读取资源所需的置备吞吐量 | Long | |
| region (producer) | DDB 客户端需要工作的区域 | 字符串 | |
| writeCapacity (producer) | 为将资源写入您的表的置备吞吐量 | Long | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
22.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 18 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-ddb.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-ddb.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-ddb.configuration.amazon-d-d-b-client | 使用 AmazonDynamoDB 作为客户端 | AmazonDynamoDB | |
| camel.component.aws-ddb.configuration.consistent-read | 决定在读取数据时是否应强制执行强一致性。 | false | 布尔值 |
| camel.component.aws-ddb.configuration.key-attribute-name | 创建表时的属性名称 | 字符串 | |
| camel.component.aws-ddb.configuration.key-attribute-type | 创建表时的属性类型 | 字符串 | |
| camel.component.aws-ddb.configuration.operation | 要执行的操作 | DdbOperations | |
| camel.component.aws-ddb.configuration.proxy-host | 在实例化 DDB 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-ddb.configuration.proxy-port | 在实例化 DDB 客户端时定义代理端口 | 整数 | |
| camel.component.aws-ddb.configuration.read-capacity | 从表中读取资源所需的置备吞吐量 | Long | |
| camel.component.aws-ddb.configuration.region | DDB 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-ddb.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-ddb.configuration.table-name | 当前使用的表的名称。 | 字符串 | |
| camel.component.aws-ddb.configuration.write-capacity | 为将资源写入您的表的置备吞吐量 | Long | |
| camel.component.aws-ddb.enabled | 启用 aws-ddb 组件 | true | 布尔值 |
| camel.component.aws-ddb.region | DDB 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-ddb.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-ddb.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 DDB 组件选项
您必须提供 Registry 中的 amazonDDBClient 或您的 accessKey 和 secretKey 以访问 Amazon 的 DynamoDB。
22.4. 使用 复制链接链接已复制到粘贴板!
22.4.1. DDB producer 评估的邮件标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 由主键获取的表格名称和对应项的映射。 |
|
|
| 此操作的表名称。 |
|
|
| 唯一标识表中的每个项目的主键。从 Camel 2.16.0 中,此标头的类型为 Map<String, AttributeValue>,而不是 Key |
|
|
| 如果要在修改前或修改(NONE、ALL_OLD、UPDATED_OLD、ALL_NEW、UPD_NEW)前或之后获取属性名称-值对。 |
|
|
| 为条件修改指定属性。 |
|
|
| 如果未指定属性名称,则返回所有属性。 |
|
|
| 如果设置为 true,则发出一致的读取,否则最终使用一致性。 |
|
|
| 如果设置将用作 Secondary Index for Query 操作。 |
|
|
| 项属性的映射,必须包含定义项目的主键值。 |
|
|
| 如果设置为 true,Amazon DynamoDB 会返回与查询参数匹配的总项目数,而不是匹配项目及其属性的列表。从 Camel 2.16.0 中,此标题已不存在。 |
|
|
| 从 Camel 2.16.0.此标头指定查询的选择条件,并将两个旧的标头 CamelAwsDdbHashKeyValue 和 CamelAwsDdbScanRangeKeyCondition合并 |
|
|
| 要从中继续之前的查询的项目的主键。 |
|
|
| 复合主键的散列组件的值。从 Camel 2.16.0 中,此标题已不存在。 |
|
|
| 要返回的最大项目数。 |
|
|
| 用于属性值和用于查询的运算符的容器。从 Camel 2.16.0 这个标头不再存在。 |
|
|
| 指定索引的正向或后向遍历。 |
|
|
| 评估扫描结果,仅返回所需的值。 |
|
|
| 将属性名称映射到更新的新值和操作。 |
22.4.2. 在 BatchGetItems 操作过程中设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 表名称和表中的对应项目属性。 |
|
|
| 包含与当前响应没有处理的表格及其对应键的映射。 |
22.4.3. DeleteItem 操作期间设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 操作返回的属性列表。 |
22.4.4. DeleteTable 操作期间设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
| ||
|
| 这个表的 Provisioned throughput 属性的值 | |
|
|
| 这个表的创建日期。 |
|
|
| 此表的项目列表。 |
|
|
| 标识此表的主键的 KeySchema。从 Camel 2.16.0,这个标头的类型是 List<KeySchemaElement> 而不是 KeySchema |
|
|
| 表名称。 |
|
|
| 表大小(以字节为单位)。 |
|
|
| 表的状态:CREATING、UPDATING、DELETING, ACTIVE |
22.4.5. 在 DescribeTable 操作期间设置消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
| {{ProvisionedThroughputDescription}} | 这个表的 Provisioned throughput 属性的值 |
|
|
| 这个表的创建日期。 |
|
|
| 此表的项目列表。 |
|
| {{KeySchema}} | 标识此表的主键的 KeySchema。从 Camel 2.16.0,这个标头的类型是 List<KeySchemaElement> 而不是 KeySchema |
|
|
| 表名称。 |
|
|
| 表大小(以字节为单位)。 |
|
|
| 表的状态:CREATING、UPDATING、DELETING, ACTIVE |
|
|
| 此表的 ReadCapacityUnits 属性。 |
|
|
| 这个表格的 WriteCapacityUnits 属性。 |
22.4.6. GetItem 操作期间设置消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 操作返回的属性列表。 |
22.4.7. PutItem 操作期间设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 操作返回的属性列表。 |
22.4.8. Query 操作期间设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 操作返回的属性列表。 |
|
|
| 查询操作停止的项目的主键,包括上一个结果集。 |
|
|
| 操作期间所消耗的表调配吞吐量的容量单位数。 |
|
|
| 响应中的项目数。 |
22.4.9. 在 Scan 操作期间设置消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 操作返回的属性列表。 |
|
|
| 查询操作停止的项目的主键,包括上一个结果集。 |
|
|
| 操作期间所消耗的表调配吞吐量的容量单位数。 |
|
|
| 响应中的项目数。 |
|
|
| 应用任何过滤器前的完整扫描中的项目数。 |
22.4.10. UpdateItem 操作期间设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 操作返回的属性列表。 |
22.4.11. 高级 AmazonDynamoDB 配置 复制链接链接已复制到粘贴板!
如果您需要对 AmazonDynamoDB 实例配置进行更多控制,您可以创建自己的实例,并从 URI 中引用它:
from("direct:start")
.to("aws-ddb://domainName?amazonDDBClient=#client");
from("direct:start")
.to("aws-ddb://domainName?amazonDDBClient=#client");
#client 指的是 registry 中的 AmazonDynamoDB。
例如,如果您的 Camel 应用程序是在防火墙后面运行:
22.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.10 或更高版本)。
22.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 23 章 AWS DynamoDB Streams Component 复制链接链接已复制到粘贴板!
作为 Camel 2.17 版提供
DynamoDB Stream 组件支持接收来自 Amazon DynamoDB Stream 服务的消息。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon DynamoDB Streams。如需更多信息,请参阅 AWS DynamoDB
23.1. URI 格式 复制链接链接已复制到粘贴板!
aws-ddbstream://table-name[?options]
aws-ddbstream://table-name[?options]
需要在使用流前创建流。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
23.2. URI 选项 复制链接链接已复制到粘贴板!
AWS DynamoDB Streams 组件支持 5 选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS DDB 流默认配置 | DdbStreamConfiguration | |
| accessKey (consumer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (consumer) | Amazon AWS Secret Key | 字符串 | |
| 区域 (使用者) | Amazon AWS Region | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS DynamoDB Streams 端点使用 URI 语法配置:
aws-ddbstream:tableName
aws-ddbstream:tableName
使用以下路径和查询参数:
23.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| tableName | dynamodb 表的 必填 名称 | 字符串 |
23.2.2. 查询参数(28 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonDynamoDbStreams Client (consumer) | Amazon DynamoDB 客户端用于此端点的所有请求 | AmazonDynamoDBStreams | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| iteratorType (consumer) | 定义 DynaboDB 流中的什么位置以开始获取记录。请注意,在流发现到实时前,使用 TRIM_HORIZON 可能会导致大量延迟。如果 AT,AFTER_SEQUENCE_NUENCE_NUMBER,则使用 sequenceNumberProvider MUST。 | LATEST | ShardIteratorType |
| maxResultsPerRequest (consumer) | 在每个轮询中获取的最大记录数 | int | |
| proxyHost (consumer) | 在实例化 DDBStreams 客户端时定义代理主机 | 字符串 | |
| proxyPort (consumer) | 在实例化 DDBStreams 客户端时定义代理端口 | 整数 | |
| 区域 (使用者) | DDBStreams 客户端需要正常工作的区域 | 字符串 | |
| sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。 | false | 布尔值 |
| sequenceNumberProvider (consumer) | 当使用两个 ShardIteratorType.AT、AFTER_SEQUENCE_NUMBER iterator 类型时的序列号的供应商。可以是 registry 引用,也可以是字面的序列号。 | SequenceNumberProvider | |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| pollStrategy (consumer) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。 | PollingConsumerPoll Strategy | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| backoffErrorThreshold (scheduler) | 后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。 | int | |
| backoffIdleThreshold (scheduler) | 后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。 | int | |
| backoffMultiplier (scheduler) | 如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。 | int | |
| 延迟 (scheduler) | 下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 500 | long |
| greedy (scheduler) | 如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。 | false | 布尔值 |
| initialDelay (scheduler) | 第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 1000 | long |
| runLoggingLevel (scheduler) | 消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。 | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。 | ScheduledExecutor 服务 | |
| 调度程序 (scheduler) | 使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序 | none | ScheduledPollConsumer Scheduler |
| schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。 | map | |
| startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
| timeUnit (scheduler) | 初始延迟和延迟选项的时间单位。 | 毫秒 | TimeUnit |
| useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
23.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 15 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-ddbstream.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-ddbstream.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-ddbstream.configuration.amazon-dynamo-db-streams-client | Amazon DynamoDB 客户端用于此端点的所有请求 | AmazonDynamoDBStreams | |
| camel.component.aws-ddbstream.configuration.iterator-type | 定义 DynaboDB 流中的什么位置以开始获取记录。请注意,在流发现到实时前,使用 TRIM_HORIZON 可能会导致大量延迟。如果 AT,AFTER_SEQUENCE_NUENCE_NUMBER,则使用 sequenceNumberProvider MUST。 | ShardIteratorType | |
| camel.component.aws-ddbstream.configuration.max-results-per-request | 在每个轮询中获取的最大记录数 | 整数 | |
| camel.component.aws-ddbstream.configuration.proxy-host | 在实例化 DDBStreams 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-ddbstream.configuration.proxy-port | 在实例化 DDBStreams 客户端时定义代理端口 | 整数 | |
| camel.component.aws-ddbstream.configuration.region | DDBStreams 客户端需要正常工作的区域 | 字符串 | |
| camel.component.aws-ddbstream.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-ddbstream.configuration.sequence-number-provider | 当使用两个 ShardIteratorType.AT、AFTER_SEQUENCE_NUMBER iterator 类型时的序列号的供应商。可以是 registry 引用,也可以是字面的序列号。 | SequenceNumberProvider | |
| camel.component.aws-ddbstream.configuration.table-name | dynamodb 表的名称 | 字符串 | |
| camel.component.aws-ddbstream.enabled | 启用 aws-ddbstream 组件 | true | 布尔值 |
| camel.component.aws-ddbstream.region | Amazon AWS Region | 字符串 | |
| camel.component.aws-ddbstream.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-ddbstream.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 DynampDBStream 组件选项
您必须在 registry 中提供 amazonDynamoDbStreamsClient,并配置了代理和相关凭证。
23.4. 序列号 复制链接链接已复制到粘贴板!
您可以提供一个字面字符串作为序列号,或者在 registry 中提供 bean。使用 bean 的示例将您当前的位置保存在更改源中,并在 Camel 启动中恢复它。
提供大于 describe-streams 结果中最大序列号的错误,因为它将导致 AWS 调用返回 HTTP 400。
23.5. 批处理消费者 复制链接链接已复制到粘贴板!
此组件实施 Batch Consumer。
这样,您可以让实例知道此批处理中有多少消息,而实例可让聚合器聚合这个数量的消息。
23.6. 使用 复制链接链接已复制到粘贴板!
23.6.1. AmazonDynamoDBStreamsClient configuration 复制链接链接已复制到粘贴板!
您需要创建一个 AmazonDynamoDBStreamsClient 实例并将其绑定到 registry
23.6.2. 提供 AWS 凭证 复制链接链接已复制到粘贴板!
建议利用 DefaultAWSCredentialsProviderChain 获取凭证,这是创建新 ClientConfiguration 实例时的默认设置,但可以在调用 createClient (…)时指定不同的 AWSCredentialsProvider。
23.7. 与 Downtime 冲突 复制链接链接已复制到粘贴板!
23.7.1. AWS DynamoDB Streams 中断时间少于 24 小时 复制链接链接已复制到粘贴板!
消费者将从上一次看到的序列号(针对 CAMEL-9515进行了实施)进行恢复,因此,只要停机没有包括 DynamoDB 本身,因此您应该收到大量事件。
23.7.2. AWS DynamoDB Streams 中断 24 小时 复制链接链接已复制到粘贴板!
假定 AWS 只保留 24 小时更改,因此无论有哪些缓解措施如何,您都会错过更改事件。
23.8. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.7 或更高版本)。
23.9. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
-
AWS 组件
+
第 24 章 AWS EC2 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.16 可用
EC2 组件支持创建、运行、启动、停止和终止 AWS EC2 实例。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon EC2。如需更多信息,请参阅 Amazon EC2。
24.1. URI 格式 复制链接链接已复制到粘贴板!
aws-ec2://label[?options]
aws-ec2://label[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
24.2. URI 选项 复制链接链接已复制到粘贴板!
AWS EC2 组件支持 5 选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS EC2 默认配置 | EC2Configuration | |
| region (producer) | EC2 客户端要正常工作的区域 | 字符串 | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS EC2 端点使用 URI 语法配置:
aws-ec2:label
aws-ec2:label
使用以下路径和查询参数:
24.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| label | 所需 的逻辑名称 | 字符串 |
24.2.2. 查询参数(8 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| amazonEc2Client (producer) | 使用现有配置的 AmazonEC2Client 作为客户端 | AmazonEC2Client | |
| operation (producer) | 执行 所需的操作。它可以是 createAndRunInstances, startInstances, stopInstances, describeInstances, describeInstances, describeInstances, rebootInstances, monitorInstances, unmonitorInstances, createTags 或 deleteTags | EC2Operations | |
| proxyHost (producer) | 在实例化 EC2 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 EC2 客户端时定义代理端口 | 整数 | |
| region (producer) | EC2 客户端要正常工作的区域 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
24.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 12 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-ec2.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-ec2.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-ec2.configuration.amazon-ec2-client | 使用现有配置的 AmazonEC2Client 作为客户端 | AmazonEC2Client | |
| camel.component.aws-ec2.configuration.operation | 要执行的操作。它可以是 createAndRunInstances, startInstances, stopInstances, describeInstances, describeInstances, describeInstances, rebootInstances, monitorInstances, unmonitorInstances, createTags 或 deleteTags | EC2Operations | |
| camel.component.aws-ec2.configuration.proxy-host | 在实例化 EC2 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-ec2.configuration.proxy-port | 在实例化 EC2 客户端时定义代理端口 | 整数 | |
| camel.component.aws-ec2.configuration.region | EC2 客户端要正常工作的区域 | 字符串 | |
| camel.component.aws-ec2.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-ec2.enabled | 启用 aws-ec2 组件 | true | 布尔值 |
| camel.component.aws-ec2.region | EC2 客户端要正常工作的区域 | 字符串 | |
| camel.component.aws-ec2.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-ec2.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 EC2 组件选项
您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonEc2Client,才能访问 Amazon EC2 服务。
24.4. 使用 复制链接链接已复制到粘贴板!
24.4.1. EC2 producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| AWS 市场的镜像 ID |
|
| com.amazonaws.services.ec2.model.InstanceType | 要创建并运行的实例类型 |
|
|
| 我们要执行的操作 |
|
|
| 您要运行的实例的 mininum 数量。 |
|
|
| 要运行的最大实例数。 |
|
| 布尔值 | 定义是否希望监控正在运行的实例 |
|
|
| 定义创建实例是否针对 EBS I/O 进行优化。 |
|
| 集合 | 与实例关联的安全组 |
|
|
| 用于执行启动、停止、描述和终止操作的实例 IDS 集合。 |
|
|
| 从 EC2 资源添加或删除的标签集合 |
依赖项
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。
24.5. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 25 章 AWS IAM 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.23 可用
KMS 组件支持创建、运行、启动、停止和终止 AWS IAM 实例。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon IAM。如需更多信息,请参阅 Amazon IAM。
25.1. URI 格式 复制链接链接已复制到粘贴板!
aws-kms://label[?options]
aws-kms://label[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
25.2. URI 选项 复制链接链接已复制到粘贴板!
AWS IAM 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS IAM 默认配置 | IAMConfiguration | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | IAM 客户端需要正常工作的区域 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS IAM 端点使用 URI 语法配置:
aws-iam:label
aws-iam:label
使用以下路径和查询参数:
25.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| label | 所需 的逻辑名称 | 字符串 |
25.2.2. 查询参数(8 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| iamClient (producer) | 使用现有配置的 AWS IAM 作为客户端 | AmazonIdentity ManagementClient | |
| operation (producer) | 所需的操作 | IAMOperations | |
| proxyHost (producer) | 在实例化 KMS 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 KMS 客户端时定义代理端口 | 整数 | |
| region (producer) | KMS 客户端需要正常工作的区域 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
25.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 12 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-iam.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-iam.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-iam.configuration.iam-client | 使用现有配置的 AWS IAM 作为客户端 | AmazonIdentity ManagementClient | |
| camel.component.aws-iam.configuration.operation | 要执行的操作 | IAMOperations | |
| camel.component.aws-iam.configuration.proxy-host | 在实例化 KMS 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-iam.configuration.proxy-port | 在实例化 KMS 客户端时定义代理端口 | 整数 | |
| camel.component.aws-iam.configuration.region | KMS 客户端需要正常工作的区域 | 字符串 | |
| camel.component.aws-iam.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-iam.enabled | 是否启用 aws-iam 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.aws-iam.region | IAM 客户端需要正常工作的区域 | 字符串 | |
| camel.component.aws-iam.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-iam.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 IAM 组件选项
您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonKmsClient,才能访问 Amazon IAM 服务。
25.4. 使用 复制链接链接已复制到粘贴板!
25.4.1. IAM producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 我们要执行的操作 |
|
|
| 要管理的用户的用户名 |
|
|
| 要管理的 accessKey |
|
|
| 您要设置的 AccessKey 的 Status 是 active 和 inactive |
25.4.2. IAM Producer 操作 复制链接链接已复制到粘贴板!
Camel-AWS IAM 组件在制作者端提供以下操作:
- listAccessKeys
- createUser
- deleteUser
- listUsers
- getUser
- createAccessKey
- deleteAccessKey
- updateAccessKey
依赖项
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。
25.5. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 26 章 AWS Kinesis 组件 复制链接链接已复制到粘贴板!
作为 Camel 2.17 版提供
Kinesis 组件支持接收来自消息并将消息发送到 Amazon Kinesis 服务。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,并被签名才能使用 Amazon Kinesis。如需更多信息,请访问 AWS Kinesis
26.1. URI 格式 复制链接链接已复制到粘贴板!
aws-kinesis://stream-name[?options]
aws-kinesis://stream-name[?options]
需要在使用流前创建流。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
26.2. URI 选项 复制链接链接已复制到粘贴板!
AWS Kinesis 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS S3 默认配置 | KinesisConfiguration | |
| accessKey (common) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (common) | Amazon AWS Secret Key | 字符串 | |
| region (common) | Amazon AWS Region | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS Kinesis 端点使用 URI 语法进行配置:
aws-kinesis:streamName
aws-kinesis:streamName
使用以下路径和查询参数:
26.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| streamName | 流 所需的 名称 | 字符串 |
26.2.2. 查询参数(30 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonKinesisClient (common) | Amazon Kinesis 客户端用于此端点的所有请求 | AmazonKinesis | |
| proxyHost (common) | 在实例化 DDBStreams 客户端时定义代理主机 | 字符串 | |
| proxyPort (common) | 在实例化 DDBStreams 客户端时定义代理端口 | 整数 | |
| region (common) | Kinesis 客户端需要工作的区域 | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| iteratorType (consumer) | 定义 Kinesis 流中的什么位置以开始获取记录 | TRIM_HORIZON | ShardIteratorType |
| maxResultsPerRequest (consumer) | 在每个轮询中获取的最大记录数 | 1 | int |
| sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。 | false | 布尔值 |
| sequenceNumber (consumer) | 从开始轮询的序列号。如果iteratorType 设置为 AFTER_SEQUENCE_NUMBER 或 AT_SEQUENCE_NUMBER | 字符串 | |
| shardClosed (consumer) | 定义在分片关闭时的行为。可能的值有 ignore、silent 和 fail。如果忽略了消息,并且消费者将从一开始重新启动,不会记录下来,并且消费者从一开始就开始记录,而消费者将从开始失败,则会引发 ReachedClosedStateException。 | Ignore | KinesisShardClosed StrategyEnum |
| shardId (consumer) | 定义 Kinesis 流中要获取记录的 shardId | 字符串 | |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| pollStrategy (consumer) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。 | PollingConsumerPoll Strategy | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| backoffErrorThreshold (scheduler) | 后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。 | int | |
| backoffIdleThreshold (scheduler) | 后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。 | int | |
| backoffMultiplier (scheduler) | 如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。 | int | |
| 延迟 (scheduler) | 下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 500 | long |
| greedy (scheduler) | 如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。 | false | 布尔值 |
| initialDelay (scheduler) | 第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 1000 | long |
| runLoggingLevel (scheduler) | 消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。 | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。 | ScheduledExecutor 服务 | |
| 调度程序 (scheduler) | 使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序 | none | ScheduledPollConsumer Scheduler |
| schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。 | map | |
| startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
| timeUnit (scheduler) | 初始延迟和延迟选项的时间单位。 | 毫秒 | TimeUnit |
| useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
26.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 17 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-kinesis.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-kinesis.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-kinesis.configuration.amazon-kinesis-client | Amazon Kinesis 客户端用于此端点的所有请求 | AmazonKinesis | |
| camel.component.aws-kinesis.configuration.iterator-type | 定义 Kinesis 流中的什么位置以开始获取记录 | ShardIteratorType | |
| camel.component.aws-kinesis.configuration.max-results-per-request | 在每个轮询中获取的最大记录数 | 1 | 整数 |
| camel.component.aws-kinesis.configuration.proxy-host | 在实例化 DDBStreams 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-kinesis.configuration.proxy-port | 在实例化 DDBStreams 客户端时定义代理端口 | 整数 | |
| camel.component.aws-kinesis.configuration.region | Kinesis 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-kinesis.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-kinesis.configuration.sequence-number | 从开始轮询的序列号。如果iteratorType 设置为 AFTER_SEQUENCE_NUMBER 或 AT_SEQUENCE_NUMBER | 字符串 | |
| camel.component.aws-kinesis.configuration.shard-closed | 定义在分片关闭时的行为。可能的值有 ignore、silent 和 fail。如果忽略了消息,并且消费者将从一开始重新启动,不会记录下来,并且消费者从一开始就开始记录,而消费者将从开始失败,则会引发 ReachedClosedStateException。 | KinesisShardClosed StrategyEnum | |
| camel.component.aws-kinesis.configuration.shard-id | 定义 Kinesis 流中要获取记录的 shardId | 字符串 | |
| camel.component.aws-kinesis.configuration.stream-name | 流的名称 | 字符串 | |
| camel.component.aws-kinesis.enabled | 启用 aws-kinesis 组件 | true | 布尔值 |
| camel.component.aws-kinesis.region | Amazon AWS Region | 字符串 | |
| camel.component.aws-kinesis.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-kinesis.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 Kinesis 组件选项
您必须在 registry 中提供 amazonKinesisClient,并配置了代理和相关凭证。
26.4. 批处理消费者 复制链接链接已复制到粘贴板!
此组件实施 Batch Consumer。
这样,您可以让实例知道此批处理中有多少消息,而实例可让聚合器聚合这个数量的消息。
26.5. 使用 复制链接链接已复制到粘贴板!
26.5.1. Kinesis 使用者设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 记录的序列号。这代表为一个 String,因为它大小不是由 API 定义。如果将其用作数字类型,则请使用 |
|
|
| AWS 分配为记录的 arrival 时间。 |
|
|
| 标识流中分配给数据记录的分片。 |
26.5.2. AmazonKinesis 配置 复制链接链接已复制到粘贴板!
您需要创建一个 AmazonKinesisClient 实例并将其绑定到 registry
然后,您必须在 amazonKinesisClient 选项中引用 AmazonKinesisClient。
from("aws-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
.to("log:out?showAll=true");
from("aws-kinesis://mykinesisstream?amazonKinesisClient=#kinesisClient")
.to("log:out?showAll=true");
26.5.3. 提供 AWS 凭证 复制链接链接已复制到粘贴板!
建议利用 DefaultAWSCredentialsProviderChain 获取凭证,这是创建新 ClientConfiguration 实例时的默认设置,但可以在调用 createClient (…)时指定不同的 AWSCredentialsProvider。
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 要传递给 Kinesis 的 PartitionKey 来存储此记录。 |
|
|
| 可选参数来指示此记录的序列号。 |
26.5.5. 在成功存储记录时 Kinesis producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 记录的顺序号,如 Response 语法中所定义 |
|
|
| 存储记录的分片 ID |
26.6. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.17 或更高版本)。
26.7. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 27 章 AWS Kinesis Firehose 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.19 可用
Kinesis Firehose 组件支持向 Amazon Kinesis Firehose 服务发送消息。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon Kinesis Firehose。如需更多信息,请参阅 AWS Kinesis Firehose
27.1. URI 格式 复制链接链接已复制到粘贴板!
aws-kinesis-firehose://delivery-stream-name[?options]
aws-kinesis-firehose://delivery-stream-name[?options]
需要在使用流前创建流。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
27.2. URI 选项 复制链接链接已复制到粘贴板!
AWS Kinesis Firehose 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS Kinesis Firehose 默认配置 | KinesisFirehose 配置 | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | Amazon AWS Region | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS Kinesis Firehose 端点使用 URI 语法进行配置:
aws-kinesis-firehose:streamName
aws-kinesis-firehose:streamName
使用以下路径和查询参数:
27.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| streamName | 流 所需的 名称 | 字符串 |
27.2.2. 查询参数(7 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonKinesisFirehoseClient (producer) | Amazon Kinesis Firehose 客户端用于此端点的所有请求 | AmazonKinesisFirehose | |
| proxyHost (producer) | 在实例化 DDBStreams 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 DDBStreams 客户端时定义代理端口 | 整数 | |
| region (producer) | Kinesis 客户端需要工作的区域 | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
27.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 12 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-kinesis-firehose.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-kinesis-firehose.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-kinesis-firehose.configuration.amazon-kinesis-firehose-client | Amazon Kinesis Firehose 客户端用于此端点的所有请求 | AmazonKinesisFirehose | |
| camel.component.aws-kinesis-firehose.configuration.proxy-host | 在实例化 DDBStreams 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-kinesis-firehose.configuration.proxy-port | 在实例化 DDBStreams 客户端时定义代理端口 | 整数 | |
| camel.component.aws-kinesis-firehose.configuration.region | Kinesis 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-kinesis-firehose.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-kinesis-firehose.configuration.stream-name | 流的名称 | 字符串 | |
| camel.component.aws-kinesis-firehose.enabled | 启用 aws-kinesis-firehose 组件 | true | 布尔值 |
| camel.component.aws-kinesis-firehose.region | Amazon AWS Region | 字符串 | |
| camel.component.aws-kinesis-firehose.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-kinesis-firehose.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 Kinesis Firehose 组件选项
您必须在 registry 中提供 amazonKinesisClient,并配置了代理和相关凭证。
27.4. 使用 复制链接链接已复制到粘贴板!
27.4.1. Amazon Kinesis Firehose 配置 复制链接链接已复制到粘贴板!
您需要创建一个 AmazonKinesisClient 实例并将其绑定到 registry
然后,您必须在 amazonKinesisFirehoseClient 选项中引用 AmazonKinesisFirehoseClient URI。
from("aws-kinesis-firehose://mykinesisdeliverystream?amazonKinesisFirehoseClient=#kinesisClient")
.to("log:out?showAll=true");
from("aws-kinesis-firehose://mykinesisdeliverystream?amazonKinesisFirehoseClient=#kinesisClient")
.to("log:out?showAll=true");
27.4.2. 提供 AWS 凭证 复制链接链接已复制到粘贴板!
建议利用 DefaultAWSCredentialsProviderChain 获取凭证,这是创建新 ClientConfiguration 实例时的默认设置,但可以在调用 createClient (…)时指定不同的 AWSCredentialsProvider。
27.4.3. 在成功存储记录时 Kinesis producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 记录 ID,如 响应语法中定义的 |
27.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.19 或更高版本)。
27.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 28 章 AWS KMS 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.21 可用
KMS 组件支持创建、运行、启动、停止和终止 AWS KMS 实例。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon KMS。如需更多信息,请参阅 Amazon KMS。
28.1. URI 格式 复制链接链接已复制到粘贴板!
aws-kms://label[?options]
aws-kms://label[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
28.2. URI 选项 复制链接链接已复制到粘贴板!
AWS KMS 组件支持 5 个选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS KMS 默认配置 | KMSConfiguration | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | KMS 客户端需要正常工作的区域 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS KMS 端点使用 URI 语法配置:
aws-kms:label
aws-kms:label
使用以下路径和查询参数:
28.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| label | 所需 的逻辑名称 | 字符串 |
28.2.2. 查询参数(8 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| kmsClient (producer) | 使用现有配置的 AWS KMS 作为客户端 | AWSKMS | |
| operation (producer) | 所需的操作 | KMSOperations | |
| proxyHost (producer) | 在实例化 KMS 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 KMS 客户端时定义代理端口 | 整数 | |
| region (producer) | KMS 客户端需要正常工作的区域 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
28.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 12 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-kms.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-kms.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-kms.configuration.kms-client | 使用现有配置的 AWS KMS 作为客户端 | AWSKMS | |
| camel.component.aws-kms.configuration.operation | 要执行的操作 | KMSOperations | |
| camel.component.aws-kms.configuration.proxy-host | 在实例化 KMS 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-kms.configuration.proxy-port | 在实例化 KMS 客户端时定义代理端口 | 整数 | |
| camel.component.aws-kms.configuration.region | KMS 客户端需要正常工作的区域 | 字符串 | |
| camel.component.aws-kms.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-kms.enabled | 是否启用 aws-kms 组件自动配置。默认启用。 | 布尔值 | |
| camel.component.aws-kms.region | KMS 客户端需要正常工作的区域 | 字符串 | |
| camel.component.aws-kms.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-kms.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 KMS 组件选项
您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonKmsClient 访问 Amazon KMS 服务。
28.4. 使用 复制链接链接已复制到粘贴板!
28.4.1. MQ producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 执行 listKeys 操作时要返回的键数 |
|
|
| 我们要执行的操作 |
|
|
| 执行 createKey 操作时要使用的密钥描述 |
|
|
| 密钥 Id |
28.4.2. KMS Producer 操作 复制链接链接已复制到粘贴板!
Camel-AWS KMS 组件在制作者端提供以下操作:
- listKeys
- createKey
- disableKey
- scheduleKeyDeletion
- describeKey
- enableKey
依赖项
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。
28.5. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 29 章 AWS Lambda Component 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
Lambda 组件支持 create、get、list、delete 和 调用 AWS Lambda 功能。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,并经过注册才能使用 Amazon Lambda。如需更多信息,请参阅 Amazon Lambda。
在创建 Lambda 功能时,您需要指定一个 IAM 角色,该角色至少连接了 AWSLambdaBasicExecuteRole 策略。
警告
lambda 是地区服务。与 S3 存储桶不同,在给定区域中创建的 Lambda 功能在其他区域不可用。
29.1. URI 格式 复制链接链接已复制到粘贴板!
aws-lambda://functionName[?options]
aws-lambda://functionName[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
29.2. URI 选项 复制链接链接已复制到粘贴板!
AWS Lambda 组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS Lambda 默认配置 | LambdaConfiguration | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | Amazon AWS Region | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS Lambda 端点使用 URI 语法进行配置:
aws-lambda:function
aws-lambda:function
使用以下路径和查询参数:
29.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| function | Lambda 功能 所需的 Name。 | 字符串 |
29.2.2. 查询参数(8 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| operation (producer) | 执行 所需的操作。它可以是 listFunctions、getFunction、createFunction、deleteFunction 或 callsFunction | LambdaOperations | |
| region (producer) | Amazon AWS Region | 字符串 | |
| awsLambdaClient (advanced) | 使用现有配置的 AwsLambdaClient 作为客户端 | AWSLambda | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| proxyHost (proxy) | 在实例化 Lambda 客户端时定义代理主机 | 字符串 | |
| proxyPort (proxy) | 在实例化 Lambda 客户端时定义代理端口 | 整数 | |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
29.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 13 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-lambda.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-lambda.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-lambda.configuration.aws-lambda-client | 使用现有配置的 AwsLambdaClient 作为客户端 | AWSLambda | |
| camel.component.aws-lambda.configuration.function | Lambda 函数的名称。 | 字符串 | |
| camel.component.aws-lambda.configuration.operation | 要执行的操作。它可以是 listFunctions、getFunction、createFunction、deleteFunction 或 callsFunction | LambdaOperations | |
| camel.component.aws-lambda.configuration.proxy-host | 在实例化 Lambda 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-lambda.configuration.proxy-port | 在实例化 Lambda 客户端时定义代理端口 | 整数 | |
| camel.component.aws-lambda.configuration.region | Amazon AWS Region | 字符串 | |
| camel.component.aws-lambda.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-lambda.enabled | 是否启用 aws-lambda 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.aws-lambda.region | Amazon AWS Region | 字符串 | |
| camel.component.aws-lambda.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-lambda.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 Lambda 组件选项
您必须在 Registry 或 accessKey 和 secretKey 中提供 awsLambdaClient,才能访问 Amazon Lambda 服务。
29.4. 使用 复制链接链接已复制到粘贴板!
29.4.1. Lambda producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 操作 | 标头 | 类型 | 描述 | 必需 |
|---|---|---|---|---|
| All |
|
| 想要执行的操作。覆盖作为查询参数传递的操作 | 是 |
| createFunction |
|
| 包含部署软件包的 .zip 文件的 Amazon S3 存储桶名称。此存储桶必须位于您创建 Lambda 功能的同一 AWS 区域。 | 否 |
| createFunction |
|
| 要上传的 Amazon S3 对象(部署软件包)密钥名称。 | 否 |
| createFunction |
| 字符串 | 要上传的 Amazon S3 对象(部署软件包)版本。 | 否 |
| createFunction |
|
| zip 文件的本地路径(部署软件包)。zip 文件的内容也可以放在消息正文中。 | 否 |
| createFunction |
|
| IAM 角色的 Amazon 资源名称(ARN),Lambda 在执行功能时假设它访问任何其他 Amazon Web Services(AWS)资源。 | 是 |
| createFunction |
| 字符串 | 正在上传的 Lambda 函数的运行时环境(nodejs、nodejs4.3、nodejs6.10、java8、python2.7、python3.6、dotnetcore1.0、odejs4.3-edge) | 是 |
| createFunction |
|
| Lambda 调用的代码中的功能开始执行。对于 Node.js,它是您的功能中的 module-name.export 值。对于 Java,它可以是 package.class-name::handler 或 package.class-name。 | 是 |
| createFunction |
|
| 用户提供的描述。 | 否 |
| createFunction |
|
| 包含 Amazon SQS 队列或 Amazon SNS 主题的目标 ARN(Amazon Resource Name)的父对象。 | 否 |
| createFunction |
|
| 为函数配置的内存大小(以 MB 为单位)。必须是 64 MB 的倍数。 | 否 |
| createFunction |
|
| 用于加密您的功能环境变量 KMS 密钥的 Amazon 资源名称(ARN)。如果没有提供,AWS Lambda 将使用默认的服务密钥。 | 否 |
| createFunction |
|
| 此布尔值参数可用于请求 AWS Lambda 来创建 Lambda 函数,并将版本发布为 atomic 操作。 | 否 |
| createFunction |
|
| Lambda 应该终止功能的功能执行时间。默认值为 3 秒。 | 否 |
| createFunction |
|
| 您的模块的跟踪设置(活动或通过)。 | 否 |
| createFunction |
|
| 代表环境的配置设置的键值对。 | 否 |
| createFunction |
|
| 分配给新功能的标签(键值对)。 | 否 |
| createFunction |
|
| 如果您的 Lambda 功能访问 VPC 中的资源,则 VPC 中的一个或者多个安全组 ID 的列表。 | 否 |
| createFunction |
|
| 如果您的 Lambda 功能访问 VPC 中的资源,则 VPC 中的一个或者多个子网 ID 的列表。 | 否 |
29.5. Avalaible Operations 列表 复制链接链接已复制到粘贴板!
- listFunctions
- 得到Function,
- createFunction
- deleteFunction
- invokeFunction
- updateFunction
- createEventSourceMapping
- deleteEventSourceMapping
- listEventSourceMapping
29.6. 示例 复制链接链接已复制到粘贴板!
要了解组件如何工作,您可能会了解这个 集成测试
29.7. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。
29.8. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 30 章 AWS MQ 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.21 可用
EC2 组件支持创建、运行、启动、停止和终止 AWS MQ 实例。
前提条件
您必须拥有有效的 Amazon Web Services 开发人员帐户,并且必须注册才能使用 Amazon MQ。如需更多信息,请参阅 Amazon MQ。
30.1. URI 格式 复制链接链接已复制到粘贴板!
aws-mq://label[?options]
aws-mq://label[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
30.2. URI 选项 复制链接链接已复制到粘贴板!
AWS MQ 组件支持 5 个选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS MQ 默认配置 | MQConfiguration | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | MQ 客户端需要正常工作的区域 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS MQ 端点使用 URI 语法配置:
aws-mq:label
aws-mq:label
使用以下路径和查询参数:
30.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| label | 所需 的逻辑名称 | 字符串 |
30.2.2. 查询参数(8 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| amazonMqClient (producer) | 使用现有配置的 AmazonMQClient 作为客户端 | AmazonMQ | |
| operation (producer) | 执行 所需的操作。它可以是 listBrokers,createBroker,deleteBroker | MQOperations | |
| proxyHost (producer) | 在实例化 MQ 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 MQ 客户端时定义代理端口 | 整数 | |
| region (producer) | MQ 客户端需要正常工作的区域 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
30.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 12 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-mq.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-mq.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-mq.configuration.amazon-mq-client | 使用现有配置的 AmazonMQClient 作为客户端 | AmazonMQ | |
| camel.component.aws-mq.configuration.operation | 要执行的操作。它可以是 listBrokers,createBroker,deleteBroker | MQOperations | |
| camel.component.aws-mq.configuration.proxy-host | 在实例化 MQ 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-mq.configuration.proxy-port | 在实例化 MQ 客户端时定义代理端口 | 整数 | |
| camel.component.aws-mq.configuration.region | MQ 客户端需要正常工作的区域 | 字符串 | |
| camel.component.aws-mq.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-mq.enabled | 是否启用 aws-mq 组件的自动配置。默认启用。 | 布尔值 | |
| camel.component.aws-mq.region | MQ 客户端需要正常工作的区域 | 字符串 | |
| camel.component.aws-mq.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-mq.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 EC2 组件选项
您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonEc2Client,才能访问 Amazon EC2 服务。
30.4. 使用 复制链接链接已复制到粘贴板!
30.4.1. MQ producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 从 listBrokers 操作中检索的结果数量 |
|
|
| 代理名称 |
|
|
| 我们要执行的操作 |
|
|
| 代理 ID |
|
|
| 在 createBroker 操作中的代理部署模式 |
|
|
| createBroker 操作中的 EC2 机器的实例类型 |
|
|
| MQ 的 Broker 引擎。默认为 ACTIVEMQ |
|
|
| MQ 的 Broker Engine 版本。目前,您可以在 ACTIVEMQ 5.15.6 和 5.15.0 之间选择 |
|
|
| MQ 的用户列表 |
|
|
| 如果 MQ 实例必须公开可用,或不能公开。默认为 false。 |
依赖项
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.16 或更高版本)。
30.5. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 31 章 AWS S3 Storage Service Component 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.8 使用
S3 组件支持从/到 Amazon 的 S3 服务存储和检索 objetc。
前提条件
您必须具有有效的 Amazon Web Services 开发人员帐户,并经过签名才能使用 Amazon S3。如需更多信息,请参阅 Amazon S3。
31.1. URI 格式 复制链接链接已复制到粘贴板!
aws-s3://bucketNameOrArn[?options]
aws-s3://bucketNameOrArn[?options]
如果存储桶不存在,则会创建它。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
例如,若要从存储桶 helloBucket 读取文件 hello.txt,请使用以下代码片段:
from("aws-s3:helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt")
.to("file:/var/downloaded");
from("aws-s3:helloBucket?accessKey=yourAccessKey&secretKey=yourSecretKey&prefix=hello.txt")
.to("file:/var/downloaded");
31.2. URI 选项 复制链接链接已复制到粘贴板!
AWS S3 Storage Service 组件支持 5 个选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS S3 默认配置 | S3Configuration | |
| accessKey (common) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (common) | Amazon AWS Secret Key | 字符串 | |
| region (common) | bucket 所在的区域。这个选项在 com.amazonaws.services.s3.model.CreateBucketRequest 中使用。 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS S3 Storage Service 端点使用 URI 语法进行配置:
aws-s3:bucketNameOrArn
aws-s3:bucketNameOrArn
使用以下路径和查询参数:
31.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| bucketNameOrArn | 所需的 Bucket name 或 ARN | 字符串 |
31.2.2. 查询参数(50 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonS3Client (common) | 引用链接:https://camel.apache.org/registry.htmlRegistry.amazonaws.services.sqs.AmazonS3。 | AmazonS3 | |
| pathStyleAccess (common) | S3 客户端是否应使用路径风格的访问 | false | 布尔值 |
| policy (common) | 此队列的策略在 com.amazonaws.services.s3.AmazonS3#setBucketPolicy()方法中设置。 | 字符串 | |
| proxyHost (common) | 在实例化 SQS 客户端时定义代理主机 | 字符串 | |
| proxyPort (common) | 指定要在客户端定义中使用的代理端口。 | 整数 | |
| region (common) | S3 客户端需要工作的区域 | 字符串 | |
| useIAMCredentials (common) | 设置 S3 客户端是否应该在 EC2 实例上加载凭证,或者预期传递静态凭证。 | false | 布尔值 |
| encryptionMaterials (common) | Symmetric/Asymmetric 客户端使用量中使用的加密材料 | EncryptionMaterials | |
| useEncryption (common) | 定义是否必须使用加密 | false | 布尔值 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| deleteAfterRead (consumer) | 在检索了对象后,从 S3 中删除对象。只有提交 Exchange 时才会执行删除。如果进行回滚,则对象不会被删除。如果此选项为 false,则同一对象将会反复检索,并再次在轮询上再次进行。因此,您需要在路由中使用 Idempotent Consumer EIP 来过滤重复的。您可以使用 S3Constants#BUCKET_NAME 和 S3Constants#KEY 标头进行过滤,或者只有 S3Constants#KEY 标头。 | true | 布尔值 |
| fileName (consumer) | 使用给定文件名从存储桶获取对象 | 字符串 | |
| includeBody (consumer) | 如果为 true,则交换正文将设置为文件内容的流。如果为 false,则标头将使用 S3 对象元数据设置,但正文会为空。这个选项与 autocloseBody 选项相关。如果将 includeBody 设置为 true,并将 autocloseBody 设为 false,则最多调用者关闭 S3Object 流。将 autocloseBody 设置为 true,将自动关闭 S3Object 流。 | true | 布尔值 |
| maxConnections (consumer) | 在 S3 客户端配置中设置 maxConnections 参数 | 60 | int |
| maxMessagesPerPoll (consumer) | 获取在每次轮询时轮询的最大消息数量。默认为没有限制,但使用 0 或负数数字将其禁用。 | 10 | int |
| 前缀 (使用者) | com.amazonaws.services.s3.model.ListObjectsRequest 中使用的前缀,仅用于消耗我们感兴趣的对象。 | 字符串 | |
| sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。 | false | 布尔值 |
| autocloseBody (consumer) | 如果这个选项为 true,并且 includeBody 为 true,则在交换完成时将调用 S3Object.close ()方法。这个选项与 includeBody 选项相关。如果将 includeBody 设置为 true,并将 autocloseBody 设为 false,则最多调用者关闭 S3Object 流。将 autocloseBody 设置为 true,将自动关闭 S3Object 流。 | true | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| pollStrategy (consumer) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。 | PollingConsumerPoll Strategy | |
| deleteAfterWrite (producer) | 上传 S3 文件后删除文件对象 | false | 布尔值 |
| multiPartUpload (producer) | 如果是 true,则 camel 将以多部分格式上传文件,其部分大小决定由 partSize 的 选项决定 | false | 布尔值 |
| operation (producer) | 如果用户不想上传,则操作是要执行的操作 | S3Operations | |
| partSize (producer) | 设置在多部分上传中使用的 partSize,默认大小为 25M。 | 26214400 | long |
| serverSideEncryption (producer) | 在使用 AWS 管理的密钥加密对象时,设置服务器端加密算法。例如,使用 AES256。 | 字符串 | |
| storageClass (producer) | 要在 com.amazonaws.services.s3.model.PutObjectRequest 请求中设置的存储类。 | 字符串 | |
| awsKMSKeyId (producer) | 在启用 KMS 时定义要使用的 KMS 密钥 ID | 字符串 | |
| useAwsKMS (producer) | 定义是否必须使用 KMS | false | 布尔值 |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| accelerateModeEnabled ( advanced) | 定义是否启用 accelerate Mode 为 true 或 false | false | 布尔值 |
| chunkedEncodingDisabled ( advanced) | 定义 disabled Chunked Encoding 为 true 或 false | false | 布尔值 |
| dualstackEnabled ( advanced) | 定义 Dualstack enabled 为 true 或 false | false | 布尔值 |
| forceGlobalBucketAccess Enabled (高级) | 定义是否启用 Force Global Bucket Access 为 true 或 false | false | 布尔值 |
| payloadSigningEnabled ( advanced) | 定义 Payload Signing 已启用为 true 或 false | false | 布尔值 |
| backoffErrorThreshold (scheduler) | 后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。 | int | |
| backoffIdleThreshold (scheduler) | 后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。 | int | |
| backoffMultiplier (scheduler) | 如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。 | int | |
| 延迟 (scheduler) | 下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 500 | long |
| greedy (scheduler) | 如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。 | false | 布尔值 |
| initialDelay (scheduler) | 第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 1000 | long |
| runLoggingLevel (scheduler) | 消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。 | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。 | ScheduledExecutor 服务 | |
| 调度程序 (scheduler) | 使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序 | none | ScheduledPollConsumer Scheduler |
| schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。 | map | |
| startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
| timeUnit (scheduler) | 初始延迟和延迟选项的时间单位。 | 毫秒 | TimeUnit |
| useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
31.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 34 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-s3.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-s3.configuration.accelerate-mode-enabled | 定义是否启用 accelerate Mode 为 true 或 false | false | 布尔值 |
| camel.component.aws-s3.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-s3.configuration.amazon-s3-client | 引用链接:https://camel.apache.org/registry.htmlRegistry.amazonaws.services.sqs.AmazonS3。 | AmazonS3 | |
| camel.component.aws-s3.configuration.autoclose-body | 如果这个选项为 true,并且 includeBody 为 true,则在交换完成时将调用 S3Object.close ()方法。这个选项与 includeBody 选项相关。如果将 includeBody 设置为 true,并将 autocloseBody 设为 false,则最多调用者关闭 S3Object 流。将 autocloseBody 设置为 true,将自动关闭 S3Object 流。 | true | 布尔值 |
| camel.component.aws-s3.configuration.aws-k-m-s-key-id | 在启用 KMS 时定义要使用的 KMS 密钥 ID | 字符串 | |
| camel.component.aws-s3.configuration.bucket-name | bucket 的名称。如果存储桶尚未存在,则会创建存储桶。 | 字符串 | |
| camel.component.aws-s3.configuration.chunked-encoding-disabled | 定义 disabled Chunked Encoding 为 true 或 false | false | 布尔值 |
| camel.component.aws-s3.configuration.delete-after-read | 在检索了对象后,从 S3 中删除对象。只有提交 Exchange 时才会执行删除。如果进行回滚,则对象不会被删除。如果此选项为 false,则同一对象将会反复检索,并再次在轮询上再次进行。因此,您需要在路由中使用 Idempotent Consumer EIP 来过滤重复的。您可以使用 S3Constants#BUCKET_NAME 和 S3Constants#KEY 标头进行过滤,或者只有 S3Constants#KEY 标头。 | true | 布尔值 |
| camel.component.aws-s3.configuration.delete-after-write | 上传 S3 文件后删除文件对象 | false | 布尔值 |
| camel.component.aws-s3.configuration.dualstack-enabled | 定义 Dualstack enabled 为 true 或 false | false | 布尔值 |
| camel.component.aws-s3.configuration.encryption-materials | Symmetric/Asymmetric 客户端使用量中使用的加密材料 | EncryptionMaterials | |
| camel.component.aws-s3.configuration.file-name | 使用给定文件名从存储桶获取对象 | 字符串 | |
| camel.component.aws-s3.configuration.force-global-bucket-access-enabled | 定义是否启用 Force Global Bucket Access 为 true 或 false | false | 布尔值 |
| camel.component.aws-s3.configuration.include-body | 如果为 true,则交换正文将设置为文件内容的流。如果为 false,则标头将使用 S3 对象元数据设置,但正文会为空。这个选项与 autocloseBody 选项相关。如果将 includeBody 设置为 true,并将 autocloseBody 设为 false,则最多调用者关闭 S3Object 流。将 autocloseBody 设置为 true,将自动关闭 S3Object 流。 | true | 布尔值 |
| camel.component.aws-s3.configuration.multi-part-upload | 如果是 true,则 camel 将以多部分格式上传文件,其部分大小决定由 partSize 的 选项决定 | false | 布尔值 |
| camel.component.aws-s3.configuration.operation | 如果用户不想上传,则操作是要执行的操作 | S3Operations | |
| camel.component.aws-s3.configuration.part-size | 设置在多部分上传中使用的 partSize,默认大小为 25M。 | 26214400 | Long |
| camel.component.aws-s3.configuration.path-style-access | S3 客户端是否应使用路径风格的访问 | false | 布尔值 |
| camel.component.aws-s3.configuration.payload-signing-enabled | 定义 Payload Signing 已启用为 true 或 false | false | 布尔值 |
| camel.component.aws-s3.configuration.policy | 此队列的策略在 com.amazonaws.services.s3.AmazonS3#setBucketPolicy()方法中设置。 | 字符串 | |
| camel.component.aws-s3.configuration.prefix | com.amazonaws.services.s3.model.ListObjectsRequest 中使用的前缀,仅用于消耗我们感兴趣的对象。 | 字符串 | |
| camel.component.aws-s3.configuration.proxy-host | 在实例化 SQS 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-s3.configuration.proxy-port | 指定要在客户端定义中使用的代理端口。 | 整数 | |
| camel.component.aws-s3.configuration.region | S3 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-s3.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-s3.configuration.server-side-encryption | 在使用 AWS 管理的密钥加密对象时,设置服务器端加密算法。例如,使用 AES256。 | 字符串 | |
| camel.component.aws-s3.configuration.storage-class | 要在 com.amazonaws.services.s3.model.PutObjectRequest 请求中设置的存储类。 | 字符串 | |
| camel.component.aws-s3.configuration.use-aws-k-m-s | 定义是否必须使用 KMS | false | 布尔值 |
| camel.component.aws-s3.configuration.use-encryption | 定义是否必须使用加密 | false | 布尔值 |
| camel.component.aws-s3.enabled | 启用 aws-s3 组件 | true | 布尔值 |
| camel.component.aws-s3.region | bucket 所在的区域。这个选项在 com.amazonaws.services.s3.model.CreateBucketRequest 中使用。 | 字符串 | |
| camel.component.aws-s3.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-s3.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 S3 组件选项
您必须提供 registry 中的 amazonS3Client 或您的 accessKey 和 secretKey 以访问 Amazon 的 S3。
31.4. 批处理消费者 复制链接链接已复制到粘贴板!
此组件实施 Batch Consumer。
这样,您可以让实例知道此批处理中有多少消息,而实例可让聚合器聚合这个数量的消息。
31.5. 使用 复制链接链接已复制到粘贴板!
31.5.1. S3 producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 此对象的存储桶名称将存储或用于当前操作 |
|
|
| Camel 2.18 :将用于当前操作的 bucket Destination Name |
|
|
| 此对象的内容长度。 |
|
|
| 此对象的内容类型。 |
|
|
| Camel 2.8.2: 此对象的内容控制。 |
|
|
| Camel 2.8.2: 此对象的内容划分。 |
|
|
| Camel 2.8.2: 此对象的内容编码。 |
|
|
| Camel 2.8.2: 此对象的 md5 checksum。 |
|
|
| Camel 2.18 :目标密钥将用于当前操作 |
|
|
| 此对象将存储下或将用于当前操作的密钥 |
|
|
| Camel 2.8.2: 此对象的最后一个修改的时间戳。 |
|
|
| Camel 2.18 :要执行的操作。允许的值有 copyObject, deleteObject, listBuckets, deleteBucket, downloadLink, listObjects |
|
|
| Camel 2.8.4: 此对象的存储类。 |
|
|
|
Camel 2.11.0: 将应用到对象的 canned acl。有关允许的值,请参阅 |
|
|
|
Camel 2.11.0: 一个良好构造的 Amazon S3 访问控制列表对象。如需更多详情,请参阅 |
|
|
| Camel 2.15.0 :支持获取或设置自定义对象Metadata 标头。 |
|
| 字符串 | Camel 2.16: 设置使用 AWS 管理的密钥加密对象时的服务器端加密算法。例如,使用 AES256。 |
|
|
| 要从当前操作存储或返回的对象版本 |
31.5.2. S3 producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 新上传对象的 ETag 值。 |
|
|
| 新上传对象 的可选 版本 ID。 |
|
|
| URL 下载链接的过期(millis)该链接将存储在 CamelAwsS3DownloadLink 响应标头中。 |
31.5.3. S3 消费者设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 此对象的存储位置。 |
|
|
| 包含此对象的存储桶的名称。 |
|
|
| 根据 RFC 1864,十六进制编码了关联的对象 128 位 MD5 摘要。此数据用作完整性检查,以验证调用者收到的数据是否为 Amazon S3 发送的数据。 |
|
|
| Last-Modified 标头的值,指明 Amazon S3 最后记录了对关联对象的修改日期和时间。 |
|
|
| 关联的 Amazon S3 对象的版本 ID(如果可用)。版本 ID 仅在对象上传到启用了对象版本的 Amazon S3 存储桶时分配给对象。 |
|
|
| Content-Type HTTP 标头,指明存储在关联对象中的内容类型。此标头的值是标准 MIME 类型。 |
|
|
| 根据 RFC 1864,相关对象(内容 - 不包括标头)的 base64 编码 128 位 MD5 摘要。此数据用作消息完整性检查,以验证 Amazon S3 收到的数据是否与调用者发送的数据相同。 |
|
|
| Content-Length HTTP 标头表示关联对象的大小(以字节为单位)。 |
|
|
| 可选的 Content-Encoding HTTP 标头指定哪些内容编码已应用到对象,而且必须应用哪些解码机制才能获取 Content-Type 字段引用的介质类型。 |
|
|
| 可选的 Content-Disposition HTTP 标头指定 presentational 信息,如要保存对象的推荐文件名。 |
|
|
| 可选的 Cache-Control HTTP 标头,允许用户指定 HTTP 请求/reply 链的缓存行为。 |
|
| 字符串 | Camel 2.16: 使用 AWS 管理的密钥加密对象时的服务器端加密算法。 |
31.5.4. S3 Producer 操作 复制链接链接已复制到粘贴板!
Camel-AWS s3 组件在制作者端提供以下操作:
- copyObject
- deleteObject
- listBuckets
- deleteBucket
- downloadLink
- listObjects
31.5.5. 高级 AmazonS3 配置 复制链接链接已复制到粘贴板!
如果您的 Camel 应用程序正在防火墙后面运行,或者您需要对 AmazonS3 实例配置进行更多控制,您可以创建自己的实例:
并在您的 Camel aws-s3 组件配置中引用它:
from("aws-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
from("aws-s3://MyBucket?amazonS3Client=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
31.5.6. 使用带有 S3 组件的 KMS 复制链接链接已复制到粘贴板!
要使用 AWS KMS 对/解密数据进行加密/解密数据,您可以使用以下示例 2.21.x 中引入的选项来加密数据。
from("file:tmp/test?fileName=test.txt")
.setHeader(S3Constants.KEY, constant("testFile"))
.to("aws-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");
from("file:tmp/test?fileName=test.txt")
.setHeader(S3Constants.KEY, constant("testFile"))
.to("aws-s3://mybucket?amazonS3Client=#client&useAwsKMS=true&awsKMSKeyId=3f0637ad-296a-3dfe-a796-e60654fb128c");
这样,您将询问 S3,以使用 KMS 密钥 3f0637ad-296a-3dfe-a796-e60654fb128c 加密文件 test.txt。当您需要下载此文件时,解密将在下载前直接进行。
31.5.7. 将"useIAMCredentials"用于 s3 组件 复制链接链接已复制到粘贴板!
要使用 AWS IAM 凭证,您必须首先验证您在 上启动 Camel 应用程序的 EC2 是否具有一个 IAM 角色,其中包含附加的适当策略以便有效地运行。请记住,这个功能应该只在远程实例上设置为"true"。要进一步说明,由于 IAM 是 AWS 特定组件,所以您仍然需要在本地使用静态凭证,但 AWS 环境现在应该更易于管理。在实现并理解后,您可以将 AWS 环境的查询参数 "useIAMCredentials" 设置为 "true"!要根据本地和远程环境有效地打开和关闭此项,您可以考虑使用系统环境变量启用这个查询参数。例如,您的代码可将"useIAMCredentials"查询参数设置为 "true",当系统名为 "isRemote" 的环境变量被设置为 true 时(有很多其他方法可以这样做,这应该是一个简单示例)。虽然它并不完全取消对静态凭证的要求,但在 AWS 环境中使用 IAM 凭证无需在远程环境中刷新,并添加主要的安全增强(IAM 凭证会在策略被更新时自动刷新一次)。这是管理凭证的 AWS 建议的方法,因此应该尽可能使用。
31.6. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.8 或更高版本)。
31.7. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 32 章 AWS SimpleDB Component 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.9 提供。
sdb 组件支持从/检索到 Amazon 的 SDB 服务中的数据。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,并且必须注册才能使用 Amazon SDB。如需更多信息,请参阅 Amazon SDB。
32.1. URI 格式 复制链接链接已复制到粘贴板!
aws-sdb://domainName[?options]
aws-sdb://domainName[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
32.2. URI 选项 复制链接链接已复制到粘贴板!
AWS SimpleDB 组件没有选项。
AWS SimpleDB 端点使用 URI 语法配置:
aws-sdb:domainName
aws-sdb:domainName
使用以下路径和查询参数:
32.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| domainName | 必需,当前使用的域的名称。 | 字符串 |
32.2.2. 查询参数(10 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| amazonSDBClient (producer) | 将 AmazonSimpleDB 用作客户端 | AmazonSimpleDB | |
| consistentRead (producer) | 决定在读取数据时是否应强制执行强一致性。 | false | 布尔值 |
| maxNumberOfDomains (producer) | 您要返回的域名的最大数量。范围为 1 到 100。 | 整数 | |
| operation (producer) | 要执行的操作 | PutAttributes | SdbOperations |
| proxyHost (producer) | 在实例化 SDB 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 SDB 客户端时定义代理端口 | 整数 | |
| region (producer) | SDB 客户端需要工作的区域 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
32.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 2 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-sdb.enabled | 启用 aws-sdb 组件 | true | 布尔值 |
| camel.component.aws-sdb.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
所需的 SDB 组件选项
您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonSDBClient,才能访问 Amazon 的 SDB。
32.4. 使用 复制链接链接已复制到粘贴板!
32.4.1. 由 SDB producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 要执行操作的属性列表。 |
|
|
| 要检索的属性的名称。 |
|
|
| 决定在读取数据时是否应强制执行强一致性。 |
|
|
| 要在批处理中执行删除操作的项目列表。 |
|
|
| 当前使用的域的名称。 |
|
|
| 此项目的唯一密钥 |
|
|
| 您要返回的域名的最大数量。范围为 1 * 到 100。 |
|
|
| 指定在什么位置启动域/item 名称列表的字符串。 |
|
|
| 从 URI 选项覆盖操作。 |
|
|
| 要放入某个项的属性列表。 |
|
|
| 要放入域的项目列表。 |
|
|
| 用于查询域的表达式。 |
|
|
| 更新条件(如果指定)决定指定属性是否被更新/删除。 |
32.4.2. DomainMetadata 操作过程中设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 计算元数据的数据和时间(UNIX)秒。 |
|
|
| 域中所有项目的数量。 |
|
|
| 域中唯一属性名称的数量。 |
|
|
| 域中所有属性名称/值对的数量。 |
|
|
| 域中所有唯一属性名称的总大小(以字节为单位)。 |
|
|
| 域中所有属性值的总大小(以字节为单位)。 |
|
|
| 域中所有项名称的总大小(以字节为单位)。 |
32.4.3. 在 GetAttributes 操作过程中设置消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 操作返回的属性列表。 |
32.4.4. ListDomains 操作过程中设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 与表达式匹配的域名列表。 |
|
|
| opaque 令牌表示超过指定的 MaxNumberOfDomains 所在域更多。 |
32.4.5. 在选择操作过程中设置消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 与所选表达式匹配的项目列表。 |
|
|
| opaque 令牌表示匹配了 MaxNumberOfItems 的项目数量、响应大小超过 1MB 字节,或者执行时间超过 5 秒。 |
32.4.6. 高级 AmazonSimpleDB 配置 复制链接链接已复制到粘贴板!
如果您需要对 AmazonSimpleDB 实例配置进行更多的控制,您可以创建自己的实例并从 URI 引用它:
from("direct:start")
.to("aws-sdb://domainName?amazonSDBClient=#client");
from("direct:start")
.to("aws-sdb://domainName?amazonSDBClient=#client");
#client 指的是 registry 中的 AmazonSimpleDB。
例如,如果您的 Camel 应用程序是在防火墙后面运行:
32.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.8.4 或更高版本)。
32.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 33 章 AWS Simple Email Service 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.9 提供。
ses 组件支持向 Amazon 的 SES 服务发送电子邮件。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,且必须注册才能使用 Amazon SES。如需更多信息,请参阅 Amazon SES。
33.1. URI 格式 复制链接链接已复制到粘贴板!
aws-ses://from[?options]
aws-ses://from[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
33.2. URI 选项 复制链接链接已复制到粘贴板!
AWS Simple Email Service 组件支持 5 选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS SES 默认配置 | SesConfiguration | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | SES 客户端需要工作的区域 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS Simple Email Service 端点使用 URI 语法配置:
aws-ses:from
aws-ses:from
使用以下路径和查询参数:
33.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| from | 需要 发送者的电子邮件地址。 | 字符串 |
33.2.2. 查询参数(11 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonSESClient (producer) | 使用 AmazonSimpleEmailService 作为客户端 | AmazonSimpleEmail Service | |
| proxyHost (producer) | 在实例化 SES 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 SES 客户端时定义代理端口 | 整数 | |
| region (producer) | SES 客户端需要工作的区域 | 字符串 | |
| replyToAddresses (producer) | 对该信息的回复地址列表(es),使用 'CamelAwsSesReplyToAddresses' 标头覆盖它。 | list | |
| returnPath (producer) | 退回通知要转发的电子邮件地址,使用 'CamelAwsSesReturnPath' 标头覆盖它。 | 字符串 | |
| subject (producer) | 如果消息标题为 'CamelAwsSesSubject',则使用该主题。 | 字符串 | |
| to (producer) | 目标电子邮件地址列表。可以使用 'CamelAwsSesTo' 标头覆盖n。 | list | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
33.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 16 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-ses.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-ses.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-ses.configuration.amazon-s-e-s-client | 使用 AmazonSimpleEmailService 作为客户端 | AmazonSimpleEmail Service | |
| camel.component.aws-ses.configuration.from | 发件人的电子邮件地址。 | 字符串 | |
| camel.component.aws-ses.configuration.proxy-host | 在实例化 SES 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-ses.configuration.proxy-port | 在实例化 SES 客户端时定义代理端口 | 整数 | |
| camel.component.aws-ses.configuration.region | SES 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-ses.configuration.reply-to-addresses | 对该信息的回复地址列表(es),使用 'CamelAwsSesReplyToAddresses' 标头覆盖它。 | list | |
| camel.component.aws-ses.configuration.return-path | 退回通知要转发的电子邮件地址,使用 'CamelAwsSesReturnPath' 标头覆盖它。 | 字符串 | |
| camel.component.aws-ses.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-ses.configuration.subject | 如果消息标题为 'CamelAwsSesSubject',则使用该主题。 | 字符串 | |
| camel.component.aws-ses.configuration.to | 目标电子邮件地址列表。可以使用 'CamelAwsSesTo' 标头覆盖n。 | list | |
| camel.component.aws-ses.enabled | 启用 aws-ses 组件 | true | 布尔值 |
| camel.component.aws-ses.region | SES 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-ses.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-ses.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 SES 组件选项
您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonSESClient,才能访问 Amazon 的 SES。
33.4. 使用 复制链接链接已复制到粘贴板!
33.4.1. 由 SES producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 发件人的电子邮件地址。 |
|
|
| 此电子邮件的目的地。 |
|
|
| 消息的主题。 |
|
|
| 邮件的答复电子邮件地址。 |
|
|
| 要转发退回通知的电子邮件地址。 |
|
|
| 自 Camel 2.12.3 起,显示电子邮件内容是否为 HTML 的标记。 |
33.4.2. 由 SES producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| Amazon SES 消息 ID。 |
33.4.3. 高级 AmazonSimpleEmailService 配置 复制链接链接已复制到粘贴板!
如果您需要更多对 AmazonSimpleEmailService 实例配置进行更多的控制,您可以创建自己的实例并从 URI 引用它:
from("direct:start")
.to("aws-ses://example@example.com?amazonSESClient=#client");
from("direct:start")
.to("aws-ses://example@example.com?amazonSESClient=#client");
#client 指的是 registry 中的 AmazonSimpleEmailService。
例如,如果您的 Camel 应用程序是在防火墙后面运行:
33.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.8.4 或更高版本)。
33.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 34 章 AWS Simple notification System 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.8 使用
SNS 组件允许将消息发送到 Amazon Simple Notification Topic。Amazon API 的实现由 AWS SDK 提供。
前提条件
您必须具有有效的 Amazon Web Services 开发人员帐户,并经过签名才能使用 Amazon SNS。如需更多信息,请参阅 Amazon SNS。
34.1. URI 格式 复制链接链接已复制到粘贴板!
aws-sns://topicNameOrArn[?options]
aws-sns://topicNameOrArn[?options]
如果主题不存在,则会创建这些主题。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
34.2. URI 选项 复制链接链接已复制到粘贴板!
AWS Simple Notification System 组件支持 5 选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS SNS 默认配置 | SnsConfiguration | |
| accessKey (producer) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (producer) | Amazon AWS Secret Key | 字符串 | |
| region (producer) | SNS 客户端需要工作的区域 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS Simple Notification System 端点使用 URI 语法配置:
aws-sns:topicNameOrArn
aws-sns:topicNameOrArn
使用以下路径和查询参数:
34.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| topicNameOrArn | 所需的 主题名称或 ARN | 字符串 |
34.2.2. 查询参数(11 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonSNSClient (producer) | 使用 AmazonSNS 作为客户端 | AmazonSNS | |
| headerFilterStrategy (producer) | 使用自定义 HeaderFilterStrategy 将标头映射到/来自 Camel。 | HeaderFilterStrategy | |
| messageStructure (producer) | 要使用的消息结构,如 json | 字符串 | |
| policy (producer) | 此队列的策略 | 字符串 | |
| proxyHost (producer) | 在实例化 SNS 客户端时定义代理主机 | 字符串 | |
| proxyPort (producer) | 在实例化 SNS 客户端时定义代理端口 | 整数 | |
| region (producer) | SNS 客户端需要工作的区域 | 字符串 | |
| subject (producer) | 如果邮件标题为"CamelAwsSubject"不存在,将使用的主题。 | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
34.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 16 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-sns.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-sns.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-sns.configuration.amazon-s-n-s-client | 使用 AmazonSNS 作为客户端 | AmazonSNS | |
| camel.component.aws-sns.configuration.message-structure | 要使用的消息结构,如 json | 字符串 | |
| camel.component.aws-sns.configuration.policy | 此队列的策略 | 字符串 | |
| camel.component.aws-sns.configuration.proxy-host | 在实例化 SNS 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-sns.configuration.proxy-port | 在实例化 SNS 客户端时定义代理端口 | 整数 | |
| camel.component.aws-sns.configuration.region | SNS 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-sns.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-sns.configuration.subject | 如果邮件标题为"CamelAwsSubject"不存在,将使用的主题。 | 字符串 | |
| camel.component.aws-sns.configuration.topic-arn | 分配给创建的主题的 Amazon 资源名称(ARN)。 | 字符串 | |
| camel.component.aws-sns.configuration.topic-name | 主题的名称 | 字符串 | |
| camel.component.aws-sns.enabled | 启用 aws-sns 组件 | true | 布尔值 |
| camel.component.aws-sns.region | SNS 客户端需要工作的区域 | 字符串 | |
| camel.component.aws-sns.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-sns.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 SNS 组件选项
您必须提供 registry 中的 amazonSNSClient 或您的 accessKey 和 secretKey 以访问 Amazon 的 SNS。
34.4. 使用 复制链接链接已复制到粘贴板!
34.4.1. SNS producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
|
Amazon SNS 消息主题。如果没有设置,则使用 |
34.4.2. SNS producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| Amazon SNS 消息 ID。 |
34.4.3. 高级 AmazonSNS 配置 复制链接链接已复制到粘贴板!
如果需要更多对 AmazonSNS 实例配置进行控制,您可以创建自己的实例,并从 URI 引用它:
from("direct:start")
.to("aws-sns://MyTopic?amazonSNSClient=#client");
from("direct:start")
.to("aws-sns://MyTopic?amazonSNSClient=#client");
#client 指的是 Registry 中的 AmazonSNS。
例如,如果您的 Camel 应用程序是在防火墙后面运行:
34.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.8 或更高版本)。
34.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 35 章 AWS Simple Queue Service 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.6 提供。
sqs 组件支持向 Amazon 的 SQS 服务发送和接收信息。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,并被签名才能使用 Amazon SQS。如需更多信息,请参阅 Amazon SQS。
35.1. URI 格式 复制链接链接已复制到粘贴板!
aws-sqs://queueNameOrArn[?options]
aws-sqs://queueNameOrArn[?options]
如果队列不存在,则会创建队列。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
35.2. URI 选项 复制链接链接已复制到粘贴板!
AWS Simple Queue Service 组件支持 5 选项,它们如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS SQS 默认配置 | SqsConfiguration | |
| accessKey (common) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (common) | Amazon AWS Secret Key | 字符串 | |
| region (common) | 指定可与 queueOwnerAWSAccountId 一起使用的队列区域,以构建服务 URL。 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS Simple Queue Service 端点使用 URI 语法配置:
aws-sqs:queueNameOrArn
aws-sqs:queueNameOrArn
使用以下路径和查询参数:
35.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| queueNameOrArn | 所需的 队列名称或 ARN | 字符串 |
35.2.2. 查询参数(48 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonAWSHost (common) | Amazon AWS 云的主机名。 | amazonaws.com | 字符串 |
| amazonSQSClient (common) | 使用 AmazonSQS 作为客户端 | AmazonSQS | |
| headerFilterStrategy (common) | 使用自定义 HeaderFilterStrategy 将标头映射到/来自 Camel。 | HeaderFilterStrategy | |
| queueOwnerAWSAccountId (common) | 当您需要使用不同的帐户拥有者时,请指定队列拥有者 aws 帐户 id。 | 字符串 | |
| region (common) | 指定可与 queueOwnerAWSAccountId 一起使用的队列区域,以构建服务 URL。 | 字符串 | |
| attributeNames (consumer) | 要在消耗时接收的属性名称列表。可以使用逗号分隔多个名称。 | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| concurrentConsumers (consumer) | 允许您使用多个线程轮询 sqs 队列来增加吞吐量 | 1 | int |
| defaultVisibilityTimeout (consumer) | 默认可见性超时(以秒为单位) | 整数 | |
| deleteAfterRead (consumer) | 读取后,从 SQS 删除消息 | true | 布尔值 |
| deleteIfFiltered (consumer) | 如果交换无法通过过滤器,则是否将 DeleteMessage 发送到 SQS 队列。如果 'false' 和 Exchange 没有通过路由上游的 Camel 过滤器进行,则不会发送 DeleteMessage。 | true | 布尔值 |
| extendMessageVisibility (consumer) | 如果启用,则调度的后台任务将保留扩展 SQS 上消息可见性。如果处理消息需要很长时间,则需要这个操作。如果设为 true defaultVisibilityTimeout,则必须设置。请参阅 Amazon 文档的详细信息。 | false | 布尔值 |
| maxMessagesPerPoll (consumer) | 获取在每次轮询时轮询的最大消息数量。默认为没有限制,但使用 0 或负数数字将其禁用。 | int | |
| messageAttributeNames (consumer) | 要在消耗时接收的消息属性名称列表。可以使用逗号分隔多个名称。 | 字符串 | |
| sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。 | false | 布尔值 |
| visibilityTimeout (consumer) | 在由 ReceiveMessage 请求在 com.amazonaws.services.sqs.model.SetQueueAttributesRequest 中检索后,接收的消息从后续检索请求中隐藏的时间(以秒为单位)。这只在它与 defaultVisibilityTimeout 不同时才有意义。它永久更改队列可见性超时属性。 | 整数 | |
| waitTimeSeconds (consumer) | ReceiveMessage action 调用将等待持续持续一个消息以包含在响应中的持续时间(以秒为单位)(0 到 20)。 | 整数 | |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| pollStrategy (consumer) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。 | PollingConsumerPoll Strategy | |
| delaySeconds (producer) | 延迟发送消息的秒数。 | 整数 | |
| messageDeduplicationId Strategy (producer) | 仅限 FIFO 队列。在消息上设置 messageDeduplicationId 的策略。可以是以下选项之一: useExchangeId,使用ContentBasedDeduplication。对于 useContentBasedDeduplication 选项,消息中不会设置 messageDeduplicationId。 | useExchangeId | MessageDeduplicationId Strategy |
| messageGroupIdStrategy (producer) | 仅限 FIFO 队列。在消息上设置 messageGroupId 的策略。可以是以下选项之一: useConstant、useExchangeId、使用PropertyValue。对于 usePropertyValue 选项,将使用属性 CamelAwsMessageGroupId。 | MessageGroupIdStrategy | |
| delayQueue (advanced) | 定义是否要将 delaySeconds 选项应用到队列或单个消息 | false | 布尔值 |
| queueUrl (advanced) | 明确定义 queueUrl。所有其他参数(将影响 queueUrl)将被忽略。为了测试目的,可使用此参数连接到 SQS 的模拟实施。 | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| backoffErrorThreshold (scheduler) | 后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。 | int | |
| backoffIdleThreshold (scheduler) | 后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。 | int | |
| backoffMultiplier (scheduler) | 如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。 | int | |
| 延迟 (scheduler) | 下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 500 | long |
| greedy (scheduler) | 如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。 | false | 布尔值 |
| initialDelay (scheduler) | 第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 1000 | long |
| runLoggingLevel (scheduler) | 消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。 | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。 | ScheduledExecutor 服务 | |
| 调度程序 (scheduler) | 使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序 | none | ScheduledPollConsumer Scheduler |
| schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。 | map | |
| startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
| timeUnit (scheduler) | 初始延迟和延迟选项的时间单位。 | 毫秒 | TimeUnit |
| useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
| proxyHost (proxy) | 在实例化 SQS 客户端时定义代理主机 | 字符串 | |
| proxyPort (proxy) | 在实例化 SQS 客户端时定义代理端口 | 整数 | |
| maximumMessageSize (queue) | SQS 消息可包含此队列的 maximumMessageSize(以字节为单位)。 | 整数 | |
| messageRetentionPeriod (queue) | messageRetentionPeriod(以秒为单位)由 SQS 保留此队列的消息。 | 整数 | |
| policy (queue) | 此队列的策略 | 字符串 | |
| receiveMessageWaitTime Seconds (queue) | 如果您没有在请求中指定 WaitTimeSeconds,则队列属性 ReceiveMessageWaitTimeSeconds 用于确定要等待的时长。 | 整数 | |
| redrivePolicy (queue) | 指定向 DeadLetter 队列发送消息的策略。请参阅 Amazon 文档。 | 字符串 | |
| accesskey (安全性) | Amazon AWS 访问密钥 | 字符串 | |
| secretKey (security) | Amazon AWS Secret Key | 字符串 |
35.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 31 选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-sqs.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-sqs.configuration.access-key | Amazon AWS 访问密钥 | 字符串 | |
| camel.component.aws-sqs.configuration.amazon-a-w-s-host | Amazon AWS 云的主机名。 | amazonaws.com | 字符串 |
| camel.component.aws-sqs.configuration.amazon-s-q-s-client | 使用 AmazonSQS 作为客户端 | AmazonSQS | |
| camel.component.aws-sqs.configuration.attribute-names | 要在消耗时接收的属性名称列表。可以使用逗号分隔多个名称。 | 字符串 | |
| camel.component.aws-sqs.configuration.concurrent-consumers | 允许您使用多个线程轮询 sqs 队列来增加吞吐量 | 1 | 整数 |
| camel.component.aws-sqs.configuration.default-visibility-timeout | 默认可见性超时(以秒为单位) | 整数 | |
| camel.component.aws-sqs.configuration.delay-queue | 定义是否要将 delaySeconds 选项应用到队列或单个消息 | false | 布尔值 |
| camel.component.aws-sqs.configuration.delay-seconds | 延迟发送消息的秒数。 | 整数 | |
| camel.component.aws-sqs.configuration.delete-after-read | 读取后,从 SQS 删除消息 | true | 布尔值 |
| camel.component.aws-sqs.configuration.delete-if-filtered | 如果交换无法通过过滤器,则是否将 DeleteMessage 发送到 SQS 队列。如果 'false' 和 Exchange 没有通过路由上游的 Camel 过滤器进行,则不会发送 DeleteMessage。 | true | 布尔值 |
| camel.component.aws-sqs.configuration.extend-message-visibility | 如果启用,则调度的后台任务将保留扩展 SQS 上消息可见性。如果处理消息需要很长时间,则需要这个操作。如果设为 true defaultVisibilityTimeout,则必须设置。请参阅 Amazon 文档的详细信息。 | false | 布尔值 |
| camel.component.aws-sqs.configuration.maximum-message-size | SQS 消息可包含此队列的 maximumMessageSize(以字节为单位)。 | 整数 | |
| camel.component.aws-sqs.configuration.message-attribute-names | 要在消耗时接收的消息属性名称列表。可以使用逗号分隔多个名称。 | 字符串 | |
| camel.component.aws-sqs.configuration.message-retention-period | messageRetentionPeriod(以秒为单位)由 SQS 保留此队列的消息。 | 整数 | |
| camel.component.aws-sqs.configuration.policy | 此队列的策略 | 字符串 | |
| camel.component.aws-sqs.configuration.proxy-host | 在实例化 SQS 客户端时定义代理主机 | 字符串 | |
| camel.component.aws-sqs.configuration.proxy-port | 在实例化 SQS 客户端时定义代理端口 | 整数 | |
| camel.component.aws-sqs.configuration.queue-name | 队列的名称。如果队列不存在,则会创建队列。 | 字符串 | |
| camel.component.aws-sqs.configuration.queue-owner-a-w-s-account-id | 当您需要使用不同的帐户拥有者时,请指定队列拥有者 aws 帐户 id。 | 字符串 | |
| camel.component.aws-sqs.configuration.queue-url | 明确定义 queueUrl。所有其他参数(将影响 queueUrl)将被忽略。为了测试目的,可使用此参数连接到 SQS 的模拟实施。 | 字符串 | |
| camel.component.aws-sqs.configuration.receive-message-wait-time-seconds | 如果您没有在请求中指定 WaitTimeSeconds,则队列属性 ReceiveMessageWaitTimeSeconds 用于确定要等待的时长。 | 整数 | |
| camel.component.aws-sqs.configuration.redrive-policy | 指定向 DeadLetter 队列发送消息的策略。请参阅 Amazon 文档。 | 字符串 | |
| camel.component.aws-sqs.configuration.region | 指定可与 queueOwnerAWSAccountId 一起使用的队列区域,以构建服务 URL。 | 字符串 | |
| camel.component.aws-sqs.configuration.secret-key | Amazon AWS Secret Key | 字符串 | |
| camel.component.aws-sqs.configuration.visibility-timeout | 在由 ReceiveMessage 请求在 com.amazonaws.services.sqs.model.SetQueueAttributesRequest 中检索后,接收的消息从后续检索请求中隐藏的时间(以秒为单位)。这只在它与 defaultVisibilityTimeout 不同时才有意义。它永久更改队列可见性超时属性。 | 整数 | |
| camel.component.aws-sqs.configuration.wait-time-seconds | ReceiveMessage action 调用将等待持续持续一个消息以包含在响应中的持续时间(以秒为单位)(0 到 20)。 | 整数 | |
| camel.component.aws-sqs.enabled | 启用 aws-sqs 组件 | true | 布尔值 |
| camel.component.aws-sqs.region | 指定可与 queueOwnerAWSAccountId 一起使用的队列区域,以构建服务 URL。 | 字符串 | |
| camel.component.aws-sqs.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-sqs.secret-key | Amazon AWS Secret Key | 字符串 |
所需的 SQS 组件选项
您必须提供 Registry 中的 amazonSQSClient 或您的 accessKey 和 secretKey 以访问 Amazon 的 SQS。
35.4. 批处理消费者 复制链接链接已复制到粘贴板!
此组件实施 Batch Consumer。
这样,您可以让实例知道此批处理中有多少消息,而实例可让聚合器聚合这个数量的消息。
35.5. 使用 复制链接链接已复制到粘贴板!
35.5.1. SQS producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| Amazon SQS 消息的 MD5 校验和。 |
|
|
| Amazon SQS 消息 ID。 |
|
|
| 自 Camel 2.11 起,Amazon SQS 消息可以被其他人看到的延迟秒数。 |
35.5.2. SQS 消费者设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| Amazon SQS 消息的 MD5 校验和。 |
|
|
| Amazon SQS 消息 ID。 |
|
|
| Amazon SQS 消息接收处理。 |
|
|
| Amazon SQS 消息属性。 |
35.5.3. 高级 AmazonSQS 配置 复制链接链接已复制到粘贴板!
如果您的 Camel 应用程序正在防火墙后面运行,或者您需要对 AmazonSQS 实例配置进行更多控制,您可以创建自己的实例:
并在您的 Camel aws-sqs 组件配置中引用它:
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
35.5.4. 创建或更新 SQS Queue 复制链接链接已复制到粘贴板!
在 SQS 组件中,当端点启动时,会执行检查来获取队列存在性的信息。您可以使用 SQSConfiguration 选项通过 QueueAttributeName 映射自定义创建。
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
from("aws-sqs://MyQueue?amazonSQSClient=#client&delay=5000&maxMessagesPerPoll=5")
.to("mock:result");
在本例中,如果 AWS 上尚未创建 MyQueue 队列,它将使用 SQS 配置中的默认参数创建。如果已在 AWS 上,将使用 SQS 配置选项来覆盖现有的 AWS 配置。
35.5.5. DelayQueue VS Delay 用于单一消息 复制链接链接已复制到粘贴板!
从 2.23.0,组件具有一个新的选项: delayQueue。当 选项设为 true 时,SQS Queue 将是一个 DelayQueue,其值为 DelaySeconds 选项,作为延迟。如需有关 DelayQueue 的更多信息,您可以阅读 AWS SQS 文档。要考虑的一个重要信息,如下所示:
- 对于标准队列,按队列延迟设置不会恢复设置,不会影响队列中已存在消息的延迟。
- 对于 FIFO 队列,每个队列延迟设置都会改变设置,影响队列中已有的消息的延迟。
如官方文档中所述。如果要指定单个消息上的延迟,可以忽略 delayQueue 选项,而您可以将这个选项设置为 true,如果您需要在所有消息 enqueued 中添加一个固定延迟。
35.6. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.6 或更高版本)。
35.7. JMS-style Selector 复制链接链接已复制到粘贴板!
SQS 不允许选择器,但您可以使用 Camel Filter EIP 和设置适当的 可见Timeout 来有效地达到此目的。当 SQS 分配消息时,它将等待到可见性超时,然后尝试将消息发送到不同的消费者,除非收到 DeleteMessage。默认情况下,Camel 总是在路由末尾发送 DeleteMessage,除非路由以失败告终。要实现适当的过滤,而不在成功完成路由时发送 DeleteMessage,请使用 Filter:
from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
.filter("${header.login} == true")
.to("mock:result");
from("aws-sqs://MyQueue?amazonSQSClient=#client&defaultVisibilityTimeout=5000&deleteIfFiltered=false")
.filter("${header.login} == true")
.to("mock:result");
在上面的代码中,如果交换没有适当的标头,它不会通过过滤器使其不会从 SQS 队列中删除。在 5000 miliseconds 后,信息将对其他消费者可见。
35.8. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- AWS 组件
第 36 章 AWS Simple Workflow 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.13 可用
简单工作流组件支持从 Amazon 简单工作流服务 管理工作流。
前提条件
您必须有有效的 Amazon Web Services 开发人员帐户,并且必须注册以使用 Amazon Simple Workflow。如需更多信息,请参阅 Amazon Simple Workflow。
36.1. URI 格式 复制链接链接已复制到粘贴板!
aws-swf://<workflow|activity>[?options]
aws-swf://<workflow|activity>[?options]
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
36.2. URI 选项 复制链接链接已复制到粘贴板!
AWS Simple Workflow 组件支持 5 选项,这些选项如下。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | AWS SWF 默认配置 | SWFConfiguration | |
| accessKey (common) | Amazon AWS 访问密钥. | 字符串 | |
| secretKey (common) | Amazon AWS Secret 密钥。 | 字符串 | |
| region (common) | Amazon AWS 区域。 | 字符串 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
AWS Simple Workflow 端点使用 URI 语法配置:
aws-swf:type
aws-swf:type
使用以下路径和查询参数:
36.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| type | 所需的 活动或工作流 | 字符串 |
36.2.2. 查询参数(30 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| amazonSWClient (common) | 使用给定的 AmazonSimpleWorkflowClient 作为客户端 | AmazonSimpleWorkflow Client | |
| dataConverter (common) | 一个 com.amazonaws.services.simpleworkflow.flow.DataConverter 实例,以用于对数据进行序列化/反序列化。 | DataConverter | |
| domainName (common) | 要使用的工作流域。 | 字符串 | |
| eventName (common) | 要使用的工作流或活动事件名称。 | 字符串 | |
| region (common) | Amazon AWS 区域。 | 字符串 | |
| 版本 (通用) | 要使用的工作流或活动事件版本。 | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| ClientConfiguration 参数 (advanced) | 使用 map 中的键/值配置 ClientConfiguration。 | map | |
| startWorkflowOptions Parameters (advanced) | 使用 Map 中的键/值配置 StartWorkflowOptions。 | map | |
| sWClientParameters (advanced) | 使用 map 中的键/值配置 AmazonSimpleWorkflowClient。 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| activityList (activity) | 用于消耗活动的列表名称。 | 字符串 | |
| activitySchedulingOptions (activity) | 活动调度选项 | ActivityScheduling 选项 | |
| activityThreadPoolSize (activity) | 工作池中用于活动的最大线程数。 | 100 | int |
| activityTypeExecution Options (activity) | 活动执行选项 | ActivityTypeExecution Options | |
| activityTypeRegistration Options (activity) | 活动注册选项 | ActivityType RegistrationOptions | |
| childPolicy (workflow) | 终止工作流时要用于子工作流的策略。 | 字符串 | |
| executionStartToClose Timeout (workflow) | 将执行开始设置为关闭超时。 | 3600 | 字符串 |
| 操作 (工作流) | 工作流操作 | 开始 | 字符串 |
| signalName (workflow) | 要发送到工作流的信号名称。 | 字符串 | |
| stateResultType (workflow) | 查询工作流状态时的结果类型。 | 字符串 | |
| taskStartToCloseTimeout (workflow) | 将任务 start 设置为关闭超时。 | 600 | 字符串 |
| terminationDetails (workflow) | 终止工作流的详情。 | 字符串 | |
| terminationReason (workflow) | 终止工作流的原因。 | 字符串 | |
| workflowList (workflow) | 用于消耗工作流的列表名称。 | 字符串 | |
| workflowTypeRegistration Options (workflow) | 工作流注册选项 | WorkflowType RegistrationOptions | |
| accesskey (安全性) | Amazon AWS 访问密钥. | 字符串 | |
| secretKey (security) | Amazon AWS Secret 密钥。 | 字符串 |
36.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 32 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.aws-swf.access-key | Amazon AWS 访问密钥. | 字符串 | |
| camel.component.aws-swf.configuration.access-key | Amazon AWS 访问密钥. | 字符串 | |
| camel.component.aws-swf.configuration.activity-list | 用于消耗活动的列表名称。 | 字符串 | |
| camel.component.aws-swf.configuration.activity-scheduling-options | 活动调度选项 | ActivityScheduling 选项 | |
| camel.component.aws-swf.configuration.activity-thread-pool-size | 工作池中用于活动的最大线程数。 | 100 | 整数 |
| camel.component.aws-swf.configuration.activity-type-execution-options | 活动执行选项 | ActivityTypeExecution Options | |
| camel.component.aws-swf.configuration.activity-type-registration-options | 活动注册选项 | ActivityType RegistrationOptions | |
| camel.component.aws-swf.configuration.amazon-s-w-client | 使用给定的 AmazonSimpleWorkflowClient 作为客户端 | AmazonSimpleWorkflow Client | |
| camel.component.aws-swf.configuration.child-policy | 终止工作流时要用于子工作流的策略。 | 字符串 | |
| camel.component.aws-swf.configuration.client-configuration-parameters | 使用 map 中的键/值配置 ClientConfiguration。 | map | |
| camel.component.aws-swf.configuration.data-converter | 一个 com.amazonaws.services.simpleworkflow.flow.DataConverter 实例,以用于对数据进行序列化/反序列化。 | DataConverter | |
| camel.component.aws-swf.configuration.domain-name | 要使用的工作流域。 | 字符串 | |
| camel.component.aws-swf.configuration.event-name | 要使用的工作流或活动事件名称。 | 字符串 | |
| camel.component.aws-swf.configuration.execution-start-to-close-timeout | 将执行开始设置为关闭超时。 | 3600 | 字符串 |
| camel.component.aws-swf.configuration.operation | 工作流操作 | 开始 | 字符串 |
| camel.component.aws-swf.configuration.region | Amazon AWS 区域。 | 字符串 | |
| camel.component.aws-swf.configuration.s-w-client-parameters | 使用 map 中的键/值配置 AmazonSimpleWorkflowClient。 | map | |
| camel.component.aws-swf.configuration.secret-key | Amazon AWS Secret 密钥。 | 字符串 | |
| camel.component.aws-swf.configuration.signal-name | 要发送到工作流的信号名称。 | 字符串 | |
| camel.component.aws-swf.configuration.start-workflow-options-parameters | 使用 Map 中的键/值配置 StartWorkflowOptions。 | map | |
| camel.component.aws-swf.configuration.state-result-type | 查询工作流状态时的结果类型。 | 字符串 | |
| camel.component.aws-swf.configuration.task-start-to-close-timeout | 将任务 start 设置为关闭超时。 | 600 | 字符串 |
| camel.component.aws-swf.configuration.termination-details | 终止工作流的详情。 | 字符串 | |
| camel.component.aws-swf.configuration.termination-reason | 终止工作流的原因。 | 字符串 | |
| camel.component.aws-swf.configuration.type | 活动或工作流 | 字符串 | |
| camel.component.aws-swf.configuration.version | 要使用的工作流或活动事件版本。 | 字符串 | |
| camel.component.aws-swf.configuration.workflow-list | 用于消耗工作流的列表名称。 | 字符串 | |
| camel.component.aws-swf.configuration.workflow-type-registration-options | 工作流注册选项 | WorkflowType RegistrationOptions | |
| camel.component.aws-swf.enabled | 启用 aws-swf 组件 | true | 布尔值 |
| camel.component.aws-swf.region | Amazon AWS 区域。 | 字符串 | |
| camel.component.aws-swf.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.aws-swf.secret-key | Amazon AWS Secret 密钥。 | 字符串 |
所需的 SWF 组件选项
您必须在 Registry 或 accessKey 和 secretKey 中提供 amazonSWClient,才能访问 Amazon 的 Simple Workflow Service。
36.4. 使用 复制链接链接已复制到粘贴板!
36.4.1. SWF Workflow Producer 评估的消息标头 复制链接链接已复制到粘贴板!
工作流程制作者允许与工作流交互。它可以启动新的工作流执行,查询其状态,向正在运行的工作流发送信号,或者终止和取消它。
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
|
对工作流执行的操作。支持的操作有: |
|
|
| 要使用的工作流 ID。 |
|
|
| 要使用的 worfklow 运行 ID。 |
|
|
| 查询工作流状态时的结果类型。 |
|
|
| 要使用的工作流或活动事件名称。 |
|
|
| 要使用的工作流或活动事件版本。 |
|
|
| 终止工作流的原因。 |
|
|
| 终止工作流的详情。 |
|
|
| 终止工作流时要用于子工作流的策略。 |
36.4.2. SWF Workflow Producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 使用的 worfklow 或新生成的 ID。 |
|
|
| worfklow 运行 ID 已使用或生成。 |
36.4.3. 由 SWF Workflow Consumer 设置的消息标头 复制链接链接已复制到粘贴板!
工作流使用者表示工作流逻辑。启动之后,它将开始轮询工作流决策任务并进行处理。除了处理决策任务外,工作流使用者路由还会接收信号(从工作流制作者结束)或状态查询。工作流消费者的主要目的是使用活动制作者安排活动任务以进行执行。实际活动任务只能从工作流消费者启动的线程调度。
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 指明什么是当前事件:CamelSWFActionExecute、CamelSWFSignalReceivedAction 或 CamelSWFGetStateAction。 |
|
|
| 指明当前的决策任务是重播的。 |
|
|
| 此决策任务的开始事件的时间。 |
36.4.4. SWF Activity Producer 设置的消息标头 复制链接链接已复制到粘贴板!
活动制作者允许调度活动任务。活动制作者只能从工作流消费者开启的线程使用,它可以处理由工作流使用者启动的同步交换。
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 要调度的活动名称。 |
|
|
| 要调度的活动版本。 |
36.4.5. SWF Activity Consumer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 报告手动完成任务完成的任务令牌。 |
36.4.6. 高级 amazonSWClient 配置 复制链接链接已复制到粘贴板!
如果您需要更多对 AmazonSimpleWorkflowClient 实例配置进行更多的控制,您可以创建自己的实例并从 URI 引用它:
#client 指的是 registry 中的 AmazonSimpleWorkflowClient。
例如,如果您的 Camel 应用程序是在防火墙后面运行:
36.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.13 或更高版本)。
36.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
AWS 组件
第 37 章 AWS XRay Component 复制链接链接已复制到粘贴板!
可作为 Camel 2.21 可用
camel-aws-xray 组件用于使用 AWS XRay 跟踪和计时传入的 Camel 消息。
事件(subsegments)会捕获用于传入和传出消息。
37.1. 依赖项 复制链接链接已复制到粘贴板!
要将 AWS XRay 支持纳入 Camel 中,需要向项目添加包含 Camel 相关的 AWS XRay 相关类的存档。另外,还需要提供 AWS XRay 库。
要包括 AWS XRay 和 Camel,依赖项使用以下 Maven 导入:
37.2. 配置 复制链接链接已复制到粘贴板!
AWS XRay tracer 的配置属性是:
| 选项 | 默认值 | 描述 |
|---|---|---|
| addExcludePatterns |
| 设置 exclude 模式,它将为与 模式匹配的 Camel 消息禁用追踪。内容是一个 Set<String>,其中密钥是匹配的 routeId。该模式使用来自 Intercept 的规则。 |
| setTracingStrategy | NoopTracingStrategy |
可以提供自定义 Camel |
目前,只有 AWS XRay tracer 可以配置为为 Camel 应用程序提供分布式追踪:
37.2.1. explicit 复制链接链接已复制到粘贴板!
在您的 POM 中包含 camel-aws-xray 组件,以及与 AWS XRay Tracer 相关的任何特定依赖项。
要明确配置 AWS XRay 支持,实例化 XRayTracer 并初始化 camel 上下文。您可以选择指定一个 Tracer,或使用 Registry 或 ServiceLoader 隐式发现它。
XRayTracer xrayTracer = new XRayTracer(); // By default it uses a NoopTracingStrategy, but you can override it with a specific InterceptStrategy implementation. xrayTracer.setTracingStrategy(...); // And then initialize the context xrayTracer.init(camelContext);
XRayTracer xrayTracer = new XRayTracer();
// By default it uses a NoopTracingStrategy, but you can override it with a specific InterceptStrategy implementation.
xrayTracer.setTracingStrategy(...);
// And then initialize the context
xrayTracer.init(camelContext);
要在 XML 中使用 XRayTracer,所有您需要做的就是定义 AWS XRay tracer bean。Camel 将自动发现并使用它。
<bean id="tracingStrategy" class="..."/>
<bean id="aws-xray-tracer" class="org.apache.camel.component.aws.xray.XRayTracer" />
<property name="tracer" ref="tracingStrategy"/>
</bean>
<bean id="tracingStrategy" class="..."/>
<bean id="aws-xray-tracer" class="org.apache.camel.component.aws.xray.XRayTracer" />
<property name="tracer" ref="tracingStrategy"/>
</bean>
如果默认 NoopTracingStrategy 只跟踪并删除交换,则不会调用某些 Bean 或 EIP 模式。
37.2.2. 跟踪综合路由执行 复制链接链接已复制到粘贴板!
为了跟踪多个路由间交换的执行,当创建唯一追踪 ID 时,则会在标头中生成并存储在标头中(如果还没有对应的值可用)。此 trace ID 被复制到新的交换,以保持已处理交换的一致性视图。
因为 AWS XRay trace 可以在本地工作,当前子/segment 应该复制到新线程,并在 AWS XRay 文档中 设置。因此,Camel AWS XRay 组件提供了一个额外的标头字段,组件将使用该字段将传递的 AWS XRay Entity 设置为新线程,从而使跟踪的数据保持在路由中,而不是公开与任何执行路由无关的新片段。
组件将使用在交换标题中找到的以下常量:
| 标头 | 描述 |
|---|---|
| Camel-AWS-XRay-Trace-ID |
包含对 AWS XRay |
| Camel-AWS-XRay-Trace-Entity |
包含到复制到新线程的实际 AWS XRay |
请注意,AWS XRay Entity (即 Segment 和 Subsegment)不序列化,因此不应传递给其他 JVM 进程。
37.3. 示例 复制链接链接已复制到粘贴板!
您可以找到一个演示在此项目附带的测试中配置 AWS XRay 追踪方法示例。
第 38 章 Windows Azure 服务的 Camel 组件 复制链接链接已复制到粘贴板!
Windows Azure 服务的 Camel 组件提供来自 Camel 的 Azure 服务的连接。
| Azure Service | Camel 组件 | Camel 版本 | 组件描述 |
|---|---|---|---|
| 2.9.0 | 支持存储和检索 Blob | ||
| 2.9.0 | 支持在队列中存储和检索消息 |
第 39 章 Azure Storage Blob Service Component 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.19 可用
Azure Blob 组件支持从 Azure Storage Blob 服务存储和检索 Blob。
前提条件
您必须具有有效的 Windows Azure Storage 帐户。如需更多信息,请参阅 Azure 文档门户。
39.1. URI 格式 复制链接链接已复制到粘贴板!
azure-blob://accountName/containerName[/blobName][?options]
azure-blob://accountName/containerName[/blobName][?options]
在大多数情况下,需要 blobName,如果不存在,则会创建 blob。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
例如,要从位于 camelazure 存储帐户上的 container1 中的公共块 blob blockBlob 下载 blob 内容,请使用以下代码片段:
from("azure-blob:/camelazure/container1/blockBlob").
to("file://blobdirectory");
from("azure-blob:/camelazure/container1/blockBlob").
to("file://blobdirectory");
39.2. URI 选项 复制链接链接已复制到粘贴板!
Azure Storage Blob Service 组件没有选项。
Azure Storage Blob Service 端点使用 URI 语法进行配置:
azure-blob:containerOrBlobUri
azure-blob:containerOrBlobUri
使用以下路径和查询参数:
39.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| containerOrBlobUri | 所需的 Container 或 Blob compact Uri | 字符串 |
39.2.2. 查询参数(19 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| azureBlobClient (common) | blob 服务客户端 | CloudBlob | |
| blobOffset (common) | 为上传或下载操作设置 blob 偏移,默认为 0 | 0 | Long |
| blobType (common) | 设置 blob 类型,'blockblob' 是 default | blockblob | BlobType |
| closeStreamAfterRead (common) | 读取或保持打开后流关闭,默认为 true | true | 布尔值 |
| credentials (common) | 设置存储凭证,在大多数情况下需要 | StorageCredentials | |
| dataLength (common) | 为下载或页面 blob 上传操作设置数据长度 | Long | |
| fileDir (common) | 将下载的 Blob 保存到的文件和目录 | 字符串 | |
| publicForRead (common) | 如果启用此属性,则存储资源可以公开读取其内容,那么不必设置凭证 | false | 布尔值 |
| streamReadSize (common) | 读取 blob 内容时,设置最小读取大小(以字节为单位) | int | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| blobMetadata (producer) | 设置 blob meta-data | map | |
| blobPrefix (producer) | 设置可用于列出 Blob 的前缀 | 字符串 | |
| closeStreamAfterWrite (producer) | 在写入或保留流后关闭流,默认为 true | true | 布尔值 |
| operation (producer) | blob 服务操作提示到制作者 | listBlobs | BlobServiceOperations |
| streamWriteSize (producer) | 设置写入块和页面块的缓冲大小 | int | |
| useFlatListing (producer) | 指定是否应使用扁平或分级 blob 列表 | true | 布尔值 |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
39.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 2 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.azure-blob.enabled | 启用 azure-blob 组件 | true | 布尔值 |
| camel.component.azure-blob.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
所需的 Azure Storage Blob Service 组件选项
如果需要访问私有 Blob,则必须提供 containerOrBlob 名称和凭证。
39.4. 使用 复制链接链接已复制到粘贴板!
39.4.1. 由 Azure Storage Blob Service producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
39.4.2. Azure Storage Blob Service producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 下载的 blob 内容的文件名。 |
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| 下载的 blob 内容的文件名。 |
39.4.4. Azure Blob Service 操作 复制链接链接已复制到粘贴板!
适用于所有块类型的操作
| 操作 | 描述 |
|---|---|
|
| 获取 blob 的内容。您可以将此操作的输出限制为 blob 范围。 |
|
| 删除 blob。 |
|
| 列出 blob。 |
Block blob 操作
| 操作 | 描述 |
|---|---|
|
| 放置块 blob 内容,以创建新块 blob 或覆盖现有的块 blob 内容。 |
|
|
上传块 blob 内容,首先生成 blob 块序列,然后将其提交到 blob。如果启用消息 CommitBlockListLater 属性,您可以稍后使用 |
|
|
将一系列 blob 块提交到您之前上传到 blob 服务的块列表(使用启用了消息 CommitBlockBlob 的 |
|
| 获取块 blob 列表。 |
附加 blob 操作
| 操作 | 描述 |
|---|---|
|
|
创建 append 块。默认情况下,如果块已存在,则不会重置。请注意,您还可以通过启用消息 AppendBlobCreated 属性并使用 |
|
| 将新内容附加到 blob。如果不存在,且您启用了 AppendBlobCreated 属性,则此操作也会创建 blob。 |
页面块操作
| 操作 | 描述 |
|---|---|
|
|
创建页面块。默认情况下,如果块已存在,则不会重置。请注意,也可以通过启用消息 PageBlobCreated 属性并使用 |
|
| 创建一个页面块(除非您启用了消息 PageBlobCreated 属性和相同名称块)并设置这个 blob 的内容。 |
|
| 调整 page blob 的大小。 |
|
| 清除 page blob。 |
|
| 获取 page blob 页面范围。 |
39.4.5. Azure Blob 客户端配置 复制链接链接已复制到粘贴板!
如果您的 Camel 应用程序是在防火墙后面运行,或者您需要对 Azure Blob 客户端配置有更多的控制,您可以创建您自己的实例:
StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", "thekey");
CloudBlob client = new CloudBlob("camelazure", credentials);
registry.bind("azureBlobClient", client);
StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", "thekey");
CloudBlob client = new CloudBlob("camelazure", credentials);
registry.bind("azureBlobClient", client);
并在 Camel azure-blob 组件配置中引用它:
from("azure-blob:/camelazure/container1/blockBlob?azureBlobClient=#client")
.to("mock:result");
from("azure-blob:/camelazure/container1/blockBlob?azureBlobClient=#client")
.to("mock:result");
39.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-azure</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-azure</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.19.0 或更高版本)。
39.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- Azure Component
第 40 章 Azure Storage Queue Service 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.19 可用
Azure Queue 组件支持存储和检索消息到 Azure Storage Queue 服务。
前提条件
您必须具有有效的 Microsoft Azure 帐户。如需更多信息,请访问 Azure Portal。
40.1. URI 格式 复制链接链接已复制到粘贴板!
azure-queue://accountName/queueName[?options]
azure-queue://accountName/queueName[?options]
如果队列尚不存在,则会创建队列。
您可以以以下格式将查询选项附加到 URI 中,?options=value&option2=value&…
例如,若要从 camelazure 存储帐户中的队列 messageQueue 获取消息内容,并使用以下代码片段:
from("azure-queue:/camelazure/messageQueue").
to("file://queuedirectory");
from("azure-queue:/camelazure/messageQueue").
to("file://queuedirectory");
40.2. URI 选项 复制链接链接已复制到粘贴板!
Azure Storage Queue Service 组件没有选项。
Azure Storage Queue Service 端点使用 URI 语法进行配置:
azure-queue:containerAndQueueUri
azure-queue:containerAndQueueUri
使用以下路径和查询参数:
40.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| containerAndQueueUri | 所需的 容器队列紧凑 Uri | 字符串 |
40.2.2. 查询参数(10 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| azureQueueClient (common) | 队列服务客户端 | CloudQueue | |
| credentials (common) | 设置存储凭证,在大多数情况下需要 | StorageCredentials | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| messageTimeToLive (producer) | 消息时间(以秒为单位) | int | |
| messageVisibilityDelay (producer) | Message Visibility Delay (以秒为单位) | int | |
| operation (producer) | 将服务操作提示排队到制作者 | listQueues | QueueServiceOperations |
| queuePrefix (producer) | 设置可用于列出队列的前缀 | 字符串 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
40.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 2 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.azure-queue.enabled | 启用 azure-queue 组件 | true | 布尔值 |
| camel.component.azure-queue.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
所需的 Azure Storage Queue Service 组件选项
您必须提供 containerAndQueue URI 和凭证。
40.4. 使用 复制链接链接已复制到粘贴板!
40.4.1. 由 Azure Storage Queue Service producer 评估的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
40.4.2. Azure Storage Queue Service producer 设置的消息标头 复制链接链接已复制到粘贴板!
| 标头 | 类型 | 描述 |
|---|---|---|
| 标头 | 类型 | 描述 |
|---|---|---|
40.4.4. Azure Queue Service 操作 复制链接链接已复制到粘贴板!
| 操作 | 描述 |
|---|---|
|
| 列出队列。 |
|
| 创建队列。 |
|
| 删除队列。 |
|
| 向队列添加消息。 |
|
| 从队列检索消息。 |
|
| 查看队列中的消息,例如,确定消息是否到达正确的队列。 |
|
| 更新队列中的消息。 |
|
| 删除队列中的消息。 |
40.4.5. Azure Queue Client 配置 复制链接链接已复制到粘贴板!
如果您的 Camel 应用程序是在防火墙后面运行,或者您需要对 Azure Queue Client 配置有更多的控制,您可以创建您自己的实例:
StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", "thekey");
CloudQueue client = new CloudQueue("camelazure", credentials);
registry.bind("azureQueueClient", client);
StorageCredentials credentials = new StorageCredentialsAccountAndKey("camelazure", "thekey");
CloudQueue client = new CloudQueue("camelazure", credentials);
registry.bind("azureQueueClient", client);
并在 Camel azure-queue 组件配置中引用它:
from("azure-queue:/camelazure/messageQueue?azureQueueClient=#client")
.to("mock:result");
from("azure-queue:/camelazure/messageQueue?azureQueueClient=#client")
.to("mock:result");
40.5. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要将以下依赖项添加到其 pom.xml 中。
pom.xml
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-azure</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-azure</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.19.0 或更高版本)。
40.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- Azure Component
第 41 章 Barcode DataFormat 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.14 可用
条形数据格式基于 zxing 库。此组件的目标是从字符串(marshal)和 barcode 镜像(unmarshal)创建 barcode 镜像。您可以自由选择使用 zxing 提供的所有功能。
41.1. 依赖项 复制链接链接已复制到粘贴板!
要使用 camel 路由的 barcode 数据格式,您需要添加实现此数据格式的 camel-barcode 依赖项。
如果您使用 maven,只需在 pom.xml 中添加以下内容,替换最新和最高版本的版本号(请参阅最新版本的下载页面)。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-barcode</artifactId> <version>x.x.x</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-barcode</artifactId>
<version>x.x.x</version>
</dependency>
41.2. Barcode 选项 复制链接链接已复制到粘贴板!
Barcode 数据格式支持 5 个选项,它们如下。
| 名称 | 默认 | Java 类型 | 描述 |
|---|---|---|---|
| width |
| barcode 的宽度 | |
| height |
| barcode 高度 | |
| imageType |
| barcode 的镜像类型,如 png | |
| barcodeFormat |
| Barcode 格式,如 QR-Code | |
| contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 |
41.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 6 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.dataformat.barcode.barcode-format | Barcode 格式,如 QR-Code | 字符串 | |
| camel.dataformat.barcode.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.barcode.enabled | 启用 barcode 数据格式 | true | 布尔值 |
| camel.dataformat.barcode.height | barcode 高度 | 整数 | |
| camel.dataformat.barcode.image-type | barcode 的镜像类型,如 png | 字符串 | |
| camel.dataformat.barcode.width | barcode 的宽度 | 整数 |
ND
41.4. 使用 Java DSL 复制链接链接已复制到粘贴板!
首先,您必须初始化 barcode 数据 fomat 类。您可以使用默认构造器或参数化之一(请参阅 JavaDoc)。默认值为:
| 参数 | 默认值 |
|---|---|
| image type (BarcodeImageType) | PNG |
| width | 100 px |
| height | 100 px |
| encoding | UTF-8 |
| Barcode 格式(BarcodeFormat) | QR-Code |
// QR-Code default DataFormat code = new BarcodeDataFormat();
// QR-Code default
DataFormat code = new BarcodeDataFormat();
如果要使用 zxing hints,您可以使用 BarcodeDataFormat 实例的 'addToHintMap' 方法:
code.addToHintMap(DecodeHintType.TRY_HARDER, Boolean.true);
code.addToHintMap(DecodeHintType.TRY_HARDER, Boolean.true);
有关可能的提示信息,请参阅 xzing 文档。
41.4.1. marshalling 复制链接链接已复制到粘贴板!
from("direct://code")
.marshal(code)
.to("file://barcode_out");
from("direct://code")
.marshal(code)
.to("file://barcode_out");
您可以使用以下测试类调用路由:
template.sendBody("direct://code", "This is a testmessage!");
template.sendBody("direct://code", "This is a testmessage!");
您应该在该镜像的 'barcode_out' 文件夹中找到:
41.4.2. unmarshalling 复制链接链接已复制到粘贴板!
unmarshaller 是通用的。要取消总结,您可以使用任何 BarcodeDataFormat 实例。如果您有两个实例,一个用于(重新生成)QR-Code,另一个用于 PDF417,这无关紧要。
from("file://barcode_in?noop=true")
.unmarshal(code) // for unmarshalling, the instance doesn't matter
.to("mock:out");
from("file://barcode_in?noop=true")
.unmarshal(code) // for unmarshalling, the instance doesn't matter
.to("mock:out");
如果将上述 QR-Code 镜像粘贴到"barcode_in"文件夹中,您应该找到此 “为测试消息!”您可以作为标头变量查找 barcode 数据格式:
| 名称 | 类型 | 描述 |
|---|---|---|
| BarcodeFormat | 字符串 | com.google.zxing.BarcodeFormat 的值。 |
第 42 章 Base64 DataFormat 复制链接链接已复制到粘贴板!
作为 Camel 2.11 版本提供
Base64 数据格式用于 base64 编码和解码。
42.1. 选项 复制链接链接已复制到粘贴板!
Base64 数据格式支持 4 个选项,它们如下。
| 名称 | 默认 | Java 类型 | 描述 |
|---|---|---|---|
| lineLength |
|
| 对编码数据的具体最大行长度。默认情况下使用 76。 |
| lineSeparator |
| 要使用的行分隔符。默认使用新行字符(CRLF)。 | |
| urlSafe |
|
| 不必将 '' 和 '/' 分别发出 '-' 和 '_'。urlSafe 只应用于编码操作。解码同时处理这两种模式。默认为 false。 |
| contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 |
42.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 5 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.dataformat.base64.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.base64.enabled | 启用 base64 数据格式 | true | 布尔值 |
| camel.dataformat.base64.line-length | 对编码数据的具体最大行长度。默认情况下使用 76。 | 76 | 整数 |
| camel.dataformat.base64.line-separator | 要使用的行分隔符。默认使用新行字符(CRLF)。 | 字符串 | |
| camel.dataformat.base64.url-safe | 不必将 '' 和 '/' 分别发出 '-' 和 '_'。urlSafe 只应用于编码操作。解码同时处理这两种模式。默认为 false。 | false | 布尔值 |
ND
在 Spring DSL 中,您可以使用该标签配置数据格式:
之后,您可以参考它:
<route>
<from uri="direct:startEncode" />
<marshal ref="base64withLineLength64" />
<to uri="mock:result" />
</route>
<route>
<from uri="direct:startEncode" />
<marshal ref="base64withLineLength64" />
<to uri="mock:result" />
</route>
大多数时候,如果您使用默认选项,则不需要声明数据格式。在这种情况下,您可以声明内联数据格式,如下所示。
42.3. marshal 复制链接链接已复制到粘贴板!
在本例中,我们将文件内容分到 base64 对象。
from("file://data.bin")
.marshal().base64()
.to("jms://myqueue");
from("file://data.bin")
.marshal().base64()
.to("jms://myqueue");
在 Spring DSL 中:
<from uri="file://data.bin">
<marshal>
<base64/>
</marshal>
<to uri="jms://myqueue"/>
<from uri="file://data.bin">
<marshal>
<base64/>
</marshal>
<to uri="jms://myqueue"/>
42.4. unmarshal 复制链接链接已复制到粘贴板!
在本例中,我们在由 newOrder 处理器处理前,将来自 JMS 队列的有效负载分到字节[] 对象。
from("jms://queue/order")
.unmarshal().base64()
.process("newOrder");
from("jms://queue/order")
.unmarshal().base64()
.process("newOrder");
在 Spring DSL 中:
<from uri="jms://queue/order">
<unmarshal>
<base64/>
</unmarshal>
<to uri="bean:newOrder"/>
<from uri="jms://queue/order">
<unmarshal>
<base64/>
</unmarshal>
<to uri="bean:newOrder"/>
42.5. 依赖项 复制链接链接已复制到粘贴板!
要在 Camel 路由中使用 Base64,您需要添加实现此数据格式的 camel-base64 的依赖项。
如果使用 Maven,则只需在 pom.xml 中添加以下内容:
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-base64</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-base64</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>
第 43 章 Bean 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 1.0 可用
bean: 组件将 Bean 绑定到 Camel 消息交换。
43.1. URI 格式 复制链接链接已复制到粘贴板!
bean:beanName[?options]
bean:beanName[?options]
其中 beanID 可以是用于在 Registry 中查找 bean 的任何字符串
43.2. 选项 复制链接链接已复制到粘贴板!
Bean 组件支持 2 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| cache (advanced) | 如果启用,Camel 将缓存第一个 Registry 查找的结果。如果 registry 中的 bean 定义为单例范围,则可以启用缓存。 | 布尔值 | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Bean 端点使用 URI 语法配置:
bean:beanName
bean:beanName
使用以下路径和查询参数:
43.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| beanName | 必需 设置要调用的 bean 的名称 | 字符串 |
43.2.2. 查询参数(5 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 方法 (生成器) | 设置在 bean 上调用的方法的名称 | 字符串 | |
| cache (advanced) | 如果启用,Camel 将缓存第一个 Registry 查找的结果。如果 registry 中的 bean 定义为单例范围,则可以启用缓存。 | 布尔值 | |
| multiParameterArray (advanced) | 弃用了 如何处理从消息正文传递的参数;如果为 true,则消息正文应该是参数的数组。注:此选项由 Camel 内部使用,它不适用于最终用户。弃用备注:此选项由 Camel 内部使用,且不适用于最终用户。 | false | 布尔值 |
| 参数 (高级) | 用于配置 bean 中的其他属性 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…
43.3. 使用 复制链接链接已复制到粘贴板!
用于消耗消息的对象实例必须使用 Registry 明确注册。例如,如果您使用 Spring,则必须在 Spring 配置 spring.xml 中定义 bean;或者,如果您不使用 Spring,请通过在 JNDI 中注册 bean 来定义 bean。
格式化宏错误: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20
注册端点后,您可以构建 Camel 路由来处理交换。
bean: 端点不能定义为对路由的输入;即,您无法从某些入站消息端点路由到 bean 端点,作为输出。因此,请考虑使用 直接: 或 队列: 端点作为输入。
您可以使用 ProxyHelper 上的 createProxy () 方法创建一个代理,该代理将生成 BeanExchanges 并将其发送到任何端点:
以及使用 Spring DSL 相同的路由:
<route> <from uri="direct:hello"> <to uri="bean:bye"/> </route>
<route>
<from uri="direct:hello">
<to uri="bean:bye"/>
</route>
43.4. Bean 作为端点 复制链接链接已复制到粘贴板!
Camel 还支持调用 Bean 作为端点。在以下路由中:
情况是,当交换路由到 myBean Camel 时,将使用 Bean Binding 调用 bean。
bean 的源只是普通 POJO:
Camel 将使用 Bean Binding 来调用 sayHello 方法,通过将 Exchange 的 In body 转换为 String 类型,并将方法的输出存储在 Exchange Out 正文中。
43.5. Java DSL Bean 语法 复制链接链接已复制到粘贴板!
Java DSL 为 Bean 组件提供 syntactic sugar。您可以使用下列语法,而不明确指定 bean 作为端点(例如 to ("bean:beanName"):
您可以指定 bean 本身,而不传递对 bean 的引用名称(这样 Camel 将会在 registry 中查找该文件):
43.6. bean Binding 复制链接链接已复制到粘贴板!
如何选择需要调用的方法(如果没有通过 方法 参数明确指定),并从消息构建参数值如何由 Bean Binding 机制定义,该机制在整个 Camel 中各种 Bean 集成机制都使用它。
43.7. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
- 类 组件
- bean Binding
- Bean 集成
第 44 章 BeanIO DataFormat 复制链接链接已复制到粘贴板!
作为 Camel 2.10 版本提供
BeanIO 数据格式使用 BeanIO 处理扁平载荷(如 XML、CSV、分隔或固定长度格式)。
BeanIO 使用一个 映射 XML 文件进行配置,在其中定义从扁平格式到对象(POJO)的映射。使用这个映射文件是必须的。
44.1. 选项 复制链接链接已复制到粘贴板!
BeanIO 数据格式支持 9 个选项,它们如下。
| 名称 | 默认 | Java 类型 | 描述 |
|---|---|---|---|
| mapping |
| BeanIO 映射文件.默认从 classpath 加载。您可以使用 file:、http: 或 classpath: 前缀,以注明用于加载映射文件的位置。 | |
| streamName |
| 要使用的流的名称。 | |
| ignoreUnidentifiedRecords |
|
| 是否忽略未识别的记录. |
| ignoreUnexpectedRecords |
|
| 是否忽略意外记录。 |
| ignoreInvalidRecords |
|
| 是否忽略无效记录。 |
| encoding |
| 要使用的 charset。默认情况下,JVM 平台的默认 charset。 | |
| beanReaderErrorHandlerType |
| 在解析时,使用自定义 org.apache.camel.dataformat.beanio.BeanIOErrorHandler 作为错误处理程序。配置错误处理程序的完全限定类名称。请注意,选项 ignoreUnidentifiedRecords、ignoreUnexpectedRecords 和 ignoreInvalidRecords 在使用自定义错误处理程序时可能无法使用。 | |
| unmarshalSingleObject |
|
| 该选项可控制是否作为对象列表还是仅作为单个对象进行分类。前者是默认模式,后者仅用于特殊用例,其中 beanio 将 Camel 消息映射到单个 POJO bean。 |
| contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 |
44.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 10 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.dataformat.beanio.bean-reader-error-handler-type | 在解析时,使用自定义 org.apache.camel.dataformat.beanio.BeanIOErrorHandler 作为错误处理程序。配置错误处理程序的完全限定类名称。请注意,选项 ignoreUnidentifiedRecords、ignoreUnexpectedRecords 和 ignoreInvalidRecords 在使用自定义错误处理程序时可能无法使用。 | 字符串 | |
| camel.dataformat.beanio.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.beanio.enabled | 启用 beanio 数据格式 | true | 布尔值 |
| camel.dataformat.beanio.encoding | 要使用的 charset。默认情况下,JVM 平台的默认 charset。 | 字符串 | |
| camel.dataformat.beanio.ignore-invalid-records | 是否忽略无效记录。 | false | 布尔值 |
| camel.dataformat.beanio.ignore-unexpected-records | 是否忽略意外记录。 | false | 布尔值 |
| camel.dataformat.beanio.ignore-unidentified-records | 是否忽略未识别的记录. | false | 布尔值 |
| camel.dataformat.beanio.mapping | BeanIO 映射文件.默认从 classpath 加载。您可以使用 file:、http: 或 classpath: 前缀,以注明用于加载映射文件的位置。 | 字符串 | |
| camel.dataformat.beanio.stream-name | 要使用的流的名称。 | 字符串 | |
| camel.dataformat.beanio.unmarshal-single-object | 该选项可控制是否作为对象列表还是仅作为单个对象进行分类。前者是默认模式,后者仅用于特殊用例,其中 beanio 将 Camel 消息映射到单个 POJO bean。 | false | 布尔值 |
ND
44.3. 使用 复制链接链接已复制到粘贴板!
44.3.1. 使用 Java DSL 复制链接链接已复制到粘贴板!
要使用 BeanIODataFormat,您需要使用映射文件以及流的名称配置数据格式。
在 Java DSL 中,这可如下所示。streamName 是 "employeeFile"。
然后,我们有两个路由。第一个路由用于将 CSV 数据转换为 List<Employee> Java 对象。然后,我们被分割,因此模拟端点
会接收每行的消息。
第二代路由用于反向操作,以将 List<Employee> 转换为 CSV 数据流。
例如,CSV 数据可如下所示:
44.3.2. 使用 XML DSL 复制链接链接已复制到粘贴板!
要在 XML 中使用 BeanIO 数据格式,您需要使用 <beanio> XML 标签进行配置,如下所示。路由与上例类似。
44.4. 依赖项 复制链接链接已复制到粘贴板!
要在 Camel 路由中使用 BeanIO,您需要添加实现此数据格式的 camel-beanio 依赖关系。
如果您使用 Maven,您可以只在 pom.xml 中添加以下内容,将最新的和最大发行版本的版本号替换(请参阅最新版本下载页面)。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-beanio</artifactId> <version>2.10.0</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-beanio</artifactId>
<version>2.10.0</version>
</dependency>
第 45 章 Beanstalk 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.15 可用
Camel-beanstalk 项目为 Beanstalk 作业检索和后处理作业提供了 Camel 组件。
您可以在 Beanstalk 协议 中找到 Beanstalk 作业生命周期的详细说明。
45.1. 依赖项 复制链接链接已复制到粘贴板!
Maven 用户需要在其 pom.xml中添加以下依赖项
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-beanstalk</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-beanstalk</artifactId>
<version>${camel-version}</version>
</dependency>
其中 ${camel-version} 必须替换为 Camel 的实际版本(2.15.0 或更高版本)。
45.2. URI 格式 复制链接链接已复制到粘贴板!
beanstalk://[host[:port]][/tube][?options]
beanstalk://[host[:port]][/tube][?options]
您可以省略 端口 或两个 主机和端口 :对于 Beanstalk,默认使用("localhost"和 11300)。 如果省略 tube,则 Beanstalk 组件将使用名为"default"的 tube。
收听时,您可能想查看多个问题中的作业。只需用加号符号分隔它们,例如:
beanstalk://localhost:11300/tube1+tube2
beanstalk://localhost:11300/tube1+tube2
Tube 名称将被解码为 URL,因此,如果您的 tube 名称包含诸如 + 或 )的特殊字符,则需要对它们进行 URL 编码,或者使用 RAW 语法,请查看以下详情。
通过这种方式,当您将作业写入 Beanstalk 时,您无法指定多个 tubes。
45.3. Beanstalk 选项 复制链接链接已复制到粘贴板!
Beanstalk 组件支持 2 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| connectionSettings Factory (common) | 自定义 ConnectionSettingsFactory.指定使用哪个 ConnectionSettingsFactory 连接到 Beanstalkd。在没有 Beantalkd 守护进程的情况下进行单元测试(您可以模拟 ConnectionSettings) | ConnectionSettings Factory | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Beanstalk 端点使用 URI 语法进行配置:
beanstalk:connectionSettings
beanstalk:connectionSettings
使用以下路径和查询参数:
45.3.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| connectionSettings | 连接设置主机:port/tube | 字符串 |
45.3.2. 查询参数(26 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| command (common) | 放置意味着将作业放入 Beanstalk 中。作业正文在 Camel 消息正文中指定。作业 ID 将返回在 Beantalk.jobId 中。删除、发布、touch 或 bury expect 作业 ID 在消息头 Beantalk.jobId 中返回。操作的结果在 Beantalk.result 消息标题开始预期在消息正文中启动的作业数量,并返回在消息标题 Beantalk.result 中实际启动的作业数量。 | BeanstalkCommand | |
| jobDelay (common) | 作业延迟(以秒为单位)。 | 0 | int |
| jobPriority (common) | 作业优先级.(0 是最高,请参阅 Beanstalk 协议) | 1000 | long |
| jobTimeToRun (common) | 以秒为单位运行的作业时间。(当 0 时,anantalkd 守护进程会自动将其增加到 1,请参阅 Beanstalk 协议。) | 60 | int |
| awaitJob (consumer) | 是否在将作业从 Beantalk 之前等待作业完成 | true | 布尔值 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| onFailure (consumer) | 在处理失败时使用的命令。 | BeanstalkCommand | |
| sendEmptyMessageWhenIdle (consumer) | 如果轮询使用者没有轮询任何文件,您可以启用这个选项来发送空消息(无正文)。 | false | 布尔值 |
| useBlockIO (consumer) | 是否使用 blockIO。 | true | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| pollStrategy (consumer) | 可插拔 org.apache.camel.PollingConsumerPollingStrategy 允许您提供自定义实施来控制在轮询操作中通常会发生错误处理,然后再在 Camel 中创建并被路由。 | PollingConsumerPoll Strategy | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| backoffErrorThreshold (scheduler) | 后续错误轮询(因某些错误导致的失败)的数量,在 backoffMultipler 应该启动前发生。 | int | |
| backoffIdleThreshold (scheduler) | 后续闲置轮询的数量,在 backoffMultipler 应该启动之前发生。 | int | |
| backoffMultiplier (scheduler) | 如果行中有多个后续闲置/errors,让调度的轮询消费者重新关闭。然后,倍数是下一次实际尝试发生前跳过的轮询数量。当使用这个选项时,还必须配置 backoffIdleThreshold 和/or backoffErrorThreshold。 | int | |
| 延迟 (scheduler) | 下次轮询前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 500 | long |
| greedy (scheduler) | 如果启用了 greedy,则 ScheduledPollConsumer 将立即再次运行,如果上一运行轮询了 1 或更多消息。 | false | 布尔值 |
| initialDelay (scheduler) | 第一次轮询启动前的毫秒。您还可以使用单位(60 秒)、5m30s (5 分钟和 30 秒)和 1h (1 小时)指定时间值。 | 1000 | long |
| runLoggingLevel (scheduler) | 消费者日志轮询轮询时启动/完成日志行。此选项允许您为其配置日志级别。 | TRACE | LoggingLevel |
| scheduledExecutorService (scheduler) | 允许配置用于使用者的自定义/共享线程池。默认情况下,每个使用者都有自己的单个线程池。 | ScheduledExecutor 服务 | |
| 调度程序 (scheduler) | 使用来自 camel-spring 或 camel-quartz2 组件的 cron 调度程序 | none | ScheduledPollConsumer Scheduler |
| schedulerProperties (scheduler) | 在使用自定义调度程序或任何基于 Spring 的调度程序时配置额外属性。 | map | |
| startScheduler (scheduler) | 调度程序是否应自动启动。 | true | 布尔值 |
| timeUnit (scheduler) | 初始延迟和延迟选项的时间单位。 | 毫秒 | TimeUnit |
| useFixedDelay (scheduler) | 控制是否使用固定延迟或固定率。详情请参阅 JDK 中的 ScheduledExecutorService。 | true | 布尔值 |
45.4. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 3 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.beanstalk.connection-settings-factory | 自定义 ConnectionSettingsFactory.指定使用哪个 ConnectionSettingsFactory 连接到 Beanstalkd。在没有 Beantalkd 守护进程的情况下进行单元测试(您可以模拟 ConnectionSettings)。选项是一个 org.apache.camel.component.beanstalk.ConnectionSettingsFactory 类型。 | 字符串 | |
| camel.component.beanstalk.enabled | 启用 Beantalk 组件 | true | 布尔值 |
| camel.component.beanstalk.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
producer 行为受 command 参数影响,后者告知执行该作业的操作,可以是
用户在保留或等待 Camel 路由处理它后马上删除作业。虽然第一种方案更像是"消息队列",但第二个情况与"作业队列"类似。这个行为由 consumer.awaitJob 参数控制,它等于 true (后续 Beanstalkd 性质)。
同步时,消费者在成功完成时调用 delete ,并在失败时调用 bury 。您可以通过在 URI 中指定 consumer.onFailure 参数,在失败时执行哪一个命令。它可以取 bur y 的值, 删除或 释放。
有一个布尔值参数 consumer.useBlockIO ,它对应于 JavaBeanstalkClient 库中的相同参数。默认情况下,它是 true。
在指定版本 时要小心,因为失败的作业将立即出现在同一 tube 中,并且您的消费者将尝试再次获取它。 您可以 在此期间发布 并指定 jobDelay 。
Beantalk使用者是一个 Scheduled Polling Consumer,这意味着您可以配置更多选项,如消费者轮询的频率。如需了解更多详细信息,请参阅轮询消费者。
45.5. 使用者标头 复制链接链接已复制到粘贴板!
使用者在 Exchange 消息中存储多个作业标头:
| 属性 | 类型 | 描述 |
|---|---|---|
| beanstalk.jobId | long | 任务 ID |
| beanstalk.tube | 字符串 | 包含此作业的 tube 的名称 |
| beanstalk.state | 字符串 | "ready" 或 "delayed" 或 "reserveded" 或 "buried" (必须是 "reserved") |
| beanstalk.priority | long | 设置优先级值 |
| beanstalk.age | int | 创建此作业后的时间(以秒为单位) |
| beanstalk.time-left | int | 在服务器将该作业放入就绪队列中前的秒数 |
| beanstalk.timeouts | int | 此作业在保留过程中超时的次数 |
| beanstalk.releases | int | 客户端从保留中释放这个作业的次数 |
| beanstalk.buries | int | 该作业被管辖的次数 |
| beanstalk.kicks | int | 该作业启动的次数 |
45.6. 例子 复制链接链接已复制到粘贴板!
此 Camel 组件可让您请求作业进行处理,并将其提供给 Beanstalkd 守护进程。我们简单的演示路由可能类似如下
from("timer:dig?period=30seconds").
setBody(constant(10)).log("Kick ${in.body} buried/delayed tasks").
to("beanstalk:testTube?command=kick");
from("timer:dig?period=30seconds").
setBody(constant(10)).log("Kick ${in.body} buried/delayed tasks").
to("beanstalk:testTube?command=kick");
在第一个路由中,我们正在监听新的作业。当它们到达时,我们将尝试从消息正文解析整数值。如果成功,请记录它,并成功交换完成,使 Camel 组件能够自动从 Beanstalk 中删除 此任务。简而言,当我们无法解析作业数据时,交换失败,Camel 组件会默认将其捆绑,以便稍后进行处理或可能继续手动检查失败的作业。
因此,第二个路由定期请求 Beanstalk 从周围和/或延迟状态启动 10 个作业到正常队列。
45.7. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
第 46 章 bean Validator 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.3 可用
Validator 组件使用 Java Bean Validation API (JSR 303)执行消息正文验证。Camel 使用参考实施,即 Hibernate Validator。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
46.1. URI 格式 复制链接链接已复制到粘贴板!
bean-validator:label[?options]
bean-validator:label[?options]
或者
bean-validator://label[?options]
bean-validator://label[?options]
其中 label 是描述端点的任意文本值。
您可以使用以下格式在 URI 中附加查询选项 ?option=value&option=value&…
46.2. URI 选项 复制链接链接已复制到粘贴板!
Bean Validator 组件没有选项。
Bean Validator 端点使用 URI 语法进行配置:
bean-validator:label
bean-validator:label
使用以下路径和查询参数:
46.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| label | 需要 标签是描述端点的任意文本值 | 字符串 |
46.2.2. 查询参数(6 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| constraintValidatorFactory (producer) | 使用自定义 ConstraintValidatorFactory | ConstraintValidator Factory | |
| group (producer) | 使用自定义验证组 | javax.validation.groups.Default | 字符串 |
| messageInterpolator (producer) | 使用自定义 MessageInterpolator | MessageInterpolator | |
| traversableResolver (producer) | 使用自定义 TraversableResolver | TraversableResolver | |
| validationProviderResolver (producer) | 使用自定义 ValidationProviderResolver | ValidationProvider Resolver | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
46.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 2 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.bean-validator.enabled | 启用 bean-validator 组件 | true | 布尔值 |
| camel.component.bean-validator.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
46.4. OSGi 部署 复制链接链接已复制到粘贴板!
要在 OSGi 环境中使用 Hibernate 验证器,请使用专用 ValidationProviderResolver 实施,就像 org.apache.camel.component.bean.validator.HibernateValidationProviderResolver 一样。以下代码片段演示了此方法。请记住,您可以使用从 Camel 2.13.0 开始的 HibernateValidationProviderResolver。
Using HibernateValidationProviderResolver
如果没有定义自定义 ValidationProviderResolver,并且验证器组件已部署到 OSGi 环境中,则将自动使用 HibernateValidationProviderResolver。
46.5. 示例 复制链接链接已复制到粘贴板!
假设我们带有以下注解的 java bean
Car.java
以及我们自定义验证组的接口定义
OptionalChecks.java
public interface OptionalChecks {
}
public interface OptionalChecks {
}
通过以下 Camel 路由,只有属性制造商和 licensePlate 上的 @NotNull 约束会被验证(Camel 使用默认组 javax.validation.Default)。
from("direct:start")
.to("bean-validator://x")
.to("mock:end")
from("direct:start")
.to("bean-validator://x")
.to("mock:end")
如果要检查组中的 OptionalChecks 中的约束,则必须定义如下路由
from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
from("direct:start")
.to("bean-validator://x?group=OptionalChecks")
.to("mock:end")
如果要检查这两个组中的限制,您必须首先定义新接口
AllChecks.java
@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
@GroupSequence({Default.class, OptionalChecks.class})
public interface AllChecks {
}
然后,您的路由定义应如下所示
from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
from("direct:start")
.to("bean-validator://x?group=AllChecks")
.to("mock:end")
如果您必须提供自己的消息间策略器、遍历解析器和约束验证器工厂,则必须编写类似此的路由。
也可以将约束描述为 XML,而不是 Java 注解。在这种情况下,您必须提供文件 META-INF/validation.xml,其外观如下
validation.xml
和 constraints-car.xml 文件
constraints-car.xml
下面是一个示例路由定义的 XML 语法,其中 OrderedChecks 可以是 https://github.com/apache/camel/blob/master/components/camel-bean-validator/src/test/java/org/apache/camel/component/bean/validator/OrderedChecks.java
请注意,正文应包含要验证的类实例。
46.6. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
第 47 章 绑定组件(已弃用) 复制链接链接已复制到粘贴板!
作为 Camel 2.11 版本提供
在 Camel 术语中,绑定 是一种在合同中嵌套端点的方法;如数据格式、内容增强器 或验证步骤。绑定是可选的,您可以选择在任何 camel 端点上使用它们。
SwitchYard 项目 将服务合同添加到各种技术(如 Camel 和许多其他技术)来激发绑定。但是,Camel Bindings 并未将 Camel 嵌套在 SCA 中,而是提供将 Camel 端点嵌套在 Camel 框架本身中的合同;因此,您可以在任何 Camel 路由中使用它们。
47.1. 选项 复制链接链接已复制到粘贴板!
Binding 组件没有选项。
Binding 端点使用 URI 语法配置:
binding:bindingName:delegateUri
binding:bindingName:delegateUri
使用以下路径和查询参数:
47.1.1. 路径名(2 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| bindingName | Camel 注册表中查询 所需的 绑定名称。 | 字符串 | |
| delegateUri | 需要 委派端点的 Uri。 | 字符串 |
47.1.2. 查询参数(4 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN/ERROR 级别并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN/ERROR 级别记录并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在创建交换时设置默认交换模式。 | ExchangePattern | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
47.2. 使用绑定 复制链接链接已复制到粘贴板!
绑定目前是一个定义合同的 bean (尽管我们希望向 Camel DSL 添加绑定)。
定义绑定端点的方法有几种(即具有绑定绑定的端点)。
47.3. 使用绑定 URI 复制链接链接已复制到粘贴板!
您可以使用 binding:nameOfBinding: 前缀为任何端点 URI,其中 nameOfBinding 是 registry 中的 Binding bean 的名称。
from("binding:jaxb:activemq:myQueue").to("binding:jaxb:activemq:anotherQueue")
from("binding:jaxb:activemq:myQueue").to("binding:jaxb:activemq:anotherQueue")
此处我们使用了"jaxb"绑定,例如,可以使用 JAXB 数据格式进行汇总和未汇总的消息。
47.4. 使用 BindingComponent 复制链接链接已复制到粘贴板!
存在一个称为 BindingComponent 的组件,可以在 registry 中通过依赖项注入配置,允许创建已经绑定到某些绑定的端点。
例如,如果您使用代码在 registry 中注册一个名为 "jsonmq" 的新组件,如下所示
JacksonDataFormat format = new JacksonDataFormat(MyBean.class);
context.bind("jsonmq", new BindingComponent(new DataFormatBinding(format), "activemq:foo."));
JacksonDataFormat format = new JacksonDataFormat(MyBean.class);
context.bind("jsonmq", new BindingComponent(new DataFormatBinding(format), "activemq:foo."));
然后,您可以使用端点,就像它是任何其他端点一样。
from("jsonmq:myQueue").to("jsonmq:anotherQueue")
from("jsonmq:myQueue").to("jsonmq:anotherQueue")
它使用 queueus "foo.myQueue" 和 "foo.anotherQueue",并使用给定的 Jackson Data Format 来回放和关闭队列。
47.5. 何时使用绑定 复制链接链接已复制到粘贴板!
如果您在一个路由中仅使用端点一次,则绑定实际上可能比直接使用 'raw' 端点并照正常使用显式 marshalling 和 验证更为复杂和工作。
但是,当您将多个路由组成在一起时,绑定可以有所帮助;或使用一个路由作为"模板",用于配置输入和输出端点;绑定提供了将合同和端点嵌套在一起的不错方法。
绑定的另一个优点是,当您使用多个使用相同绑定的端点时,而不必提到特定的数据格式或验证规则,您只能使用 BindingComponent 将端点嵌套在您选择的绑定中。
因此绑定是构成工具的真正位置;只有当情况至关重要时,使用它们才会有额外的复杂性,除非您有大量路由或端点。
第 48 章 Bindy DataFormat 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.0 提供
此组件的目标是允许解析/绑定非结构化数据(或更精确的非 XML 数据)
到使用注解定义的映射的 Java Bean 中。使用 Bindy,您可以从源(如 )绑定数据:
- CSV 记录,
- 固定长度记录,
- FIX 消息,
- 或者几乎任何其他非结构化数据
到一个或多个 Plain Old Java 对象(POJO)。Bindy 根据 java 属性的类型转换数据。OVAS 可以和在某些情况下提供的一对多关系链接。此外,对于如 Date、Duble、Float、Integer、Short、Long 和 BigDecal 等数据类型,您可以提供在属性格式应用的模式。
对于 BigDecimal number,您还可以定义精确数以及十进制和分组分隔符。
| 类型 | 格式类型 | 模式示例 | Link |
|---|---|---|---|
| Date | DateFormat |
| http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html |
| 十进制* | Decimalformat |
| http://java.sun.com/j2se/1.5.0/docs/api/java/text/DecimalFormat.html |
十进制* = Double, Integer, Float, Short, Long
*Format supported*
*Format supported*
第一个发行版本只支持用逗号分开的值字段和键值对字段(例如:FIX 消息)。
要使用 camel-bindy,您必须首先在软件包中定义模型(例如 com.acme.model)和每个模型类(如 Order、client、Instrument、…)将所需的注解(此处所示)添加到 Class 或 字段中。
*Multiple models*
*Multiple models*
如果您使用多个模型,则必须将每个模型放在它自己的软件包中,以防止无法预计的结果。
从 Camel 2.16 开始,不再如此,因为您可以在同一软件包中安全地有多个模型,因为现在您可以使用类名称而不是软件包名称来配置绑定。
48.1. 选项 复制链接链接已复制到粘贴板!
Bindy dataformat 支持 5 选项,如下所示。
| 名称 | 默认 | Java 类型 | 描述 |
|---|---|---|---|
| type |
| 是否使用 csv、fixd 或 key value 对模式。根据所选的数据格式,默认值为 Csv 或 KeyValue。 | |
| classType |
| 要使用的模型类的名称。 | |
| locale |
| 要配置默认的区域设置,如 us 代表单元状态。要使用 JVM 平台默认区域设置,请使用默认名称 | |
| unwrapSingleInstance |
|
| 当 unmarshalling 应该未换行并返回单个实例时,而不是在 java.util.List 中嵌套。 |
| contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 |
48.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 18 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.dataformat.bindy-csv.class-type | 要使用的模型类的名称。 | 字符串 | |
| camel.dataformat.bindy-csv.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.bindy-csv.enabled | 启用 bindy-csv dataformat | true | 布尔值 |
| camel.dataformat.bindy-csv.locale | 要配置默认的区域设置,如 us 代表单元状态。要使用 JVM 平台默认区域设置,请使用默认名称 | 字符串 | |
| camel.dataformat.bindy-csv.type | 是否使用 csv、fixd 或 key value 对模式。 | BindyType | |
| camel.dataformat.bindy-csv.unwrap-single-instance | 当 unmarshalling 应该未换行并返回单个实例时,而不是在 java.util.List 中嵌套。 | true | 布尔值 |
| camel.dataformat.bindy-fixed.class-type | 要使用的模型类的名称。 | 字符串 | |
| camel.dataformat.bindy-fixed.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.bindy-fixed.enabled | 启用 bindy-fixed dataformat | true | 布尔值 |
| camel.dataformat.bindy-fixed.locale | 要配置默认的区域设置,如 us 代表单元状态。要使用 JVM 平台默认区域设置,请使用默认名称 | 字符串 | |
| camel.dataformat.bindy-fixed.type | 是否使用 csv、fixd 或 key value 对模式。 | BindyType | |
| camel.dataformat.bindy-fixed.unwrap-single-instance | 当 unmarshalling 应该未换行并返回单个实例时,而不是在 java.util.List 中嵌套。 | true | 布尔值 |
| camel.dataformat.bindy-kvp.class-type | 要使用的模型类的名称。 | 字符串 | |
| camel.dataformat.bindy-kvp.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.bindy-kvp.enabled | 启用 bindy-kvp 数据格式 | true | 布尔值 |
| camel.dataformat.bindy-kvp.locale | 要配置默认的区域设置,如 us 代表单元状态。要使用 JVM 平台默认区域设置,请使用默认名称 | 字符串 | |
| camel.dataformat.bindy-kvp.type | 是否使用 csv、fixd 或 key value 对模式。 | BindyType | |
| camel.dataformat.bindy-kvp.unwrap-single-instance | 当 unmarshalling 应该未换行并返回单个实例时,而不是在 java.util.List 中嵌套。 | true | 布尔值 |
ND
48.3. 注解 复制链接链接已复制到粘贴板!
创建的注解可将您的模型的不同概念映射到 POJO,如 :
- 记录类型(csv、键值对(例如 FIX 消息)、固定长度 …)、
- 链接(用于链接对象),
- DataField 及其属性(int、type、…))
- KeyValuePairField(对于在修复财务消息中具有的 key = 价值格式)
- 部分(用于识别标题、正文和页脚部分)
- OneToMany,
- BindyConverter (since 2.18.0),
- 格式因素(自 2.18.0 开始)
本节将描述它们:
48.4. 1. CsvRecord 复制链接链接已复制到粘贴板!
CsvRecord 注解用于标识模型的根类。它代表记录 = CSV 文件的一行,并可链接到多个子模型类。
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| CsvRecord | csv | 类 |
| 参数名称 | type | info |
|---|---|---|
| 分隔符 | 字符串 | 必需 - 可以是 '、' 或 ';' 或 'anything"。支持的唯一空白字符是标签(\t)。不支持其它空格(空格)。这个值被解释为正则表达式。如果要使用正则表达式中具有特殊含义的符号,例如 '|' 符号,而不是您必须屏蔽它,如 '|' |
| skipFirstLine | 布尔值 | 可选 - 默认值 = false - 允许跳过 CSV 文件的第一行 |
| crlf | 字符串 | 可选 - 可能的值 = WINDOWS、UNIX、MAC 或 custom; 默认值。WINDOWS - 允许定义要使用的回车字符。如果您指定之前列出的三个值,则输入(custom)的值将用作 CRLF 字符。 |
| generateHeaderColumns | 布尔值 | 可选 - 默认值 = false - 用来生成 CSV 的标头列 |
| autospanLine | 布尔值 | Camel 2.13/2.12.2: 可选 - 默认值为 value = false - 如果启用最后一个列,则最后一个列将自动生成到行尾,例如,如果其注释,则此行可以包含所有字符,以及分隔符 char。 |
| isOrdered | 布尔值 | 可选 - 默认值 = false - 允许在生成 CSV 时更改字段的顺序 |
| quote | 字符串 | Camel 2.8.3/2.9: 选项 - 允许指定生成 CSV 时字段的引号字符。此注解与模型的 root 类关联,必须声明一个时间。 |
| 引用 | 布尔值 | *Camel 2.11:*optional - 默认值 = false - 在生成 CSV 时必须用引号(和标头)来加引号。 |
| endWithLineBreak | 布尔值 | Camel 2.21: 可选 - 默认值 = true - 如果 CSV 生成的文件是否应该以换行符结尾。 |
case 1 : separator = ','
用于分隔 CSV 记录中字段的分隔符为",即:
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500,
USD,08-01-2009
@CsvRecord( separator = "," )
public Class Order {
}
@CsvRecord( separator = "," )
public Class Order {
}
case 2 : separator = ';'
与前面的情况进行比较,此处的分隔符为 ';' 而不是 ',':
10; jine; M; XD12345678; Fortis Dynamic 15/15; 2500; USD; 08-01-2009
@CsvRecord( separator = ";" )
public Class Order {
}
@CsvRecord( separator = ";" )
public Class Order {
}
case 3 : separator = '|'
与前面的情况进行比较,这里的分隔符为 '|' 而不是 ';':
10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD| 08-01-2009
10| J| Pauline| M| XD12345678| Fortis Dynamic 15/15| 2500| USD|
08-01-2009
@CsvRecord( separator = "\\|" )
public Class Order {
}
@CsvRecord( separator = "\\|" )
public Class Order {
}
case 4 : separator = '\",\"'
适用于 Camel 2.8.2 或更早版本
当解析 CSV 记录的字段包含 '、' 或 ';',它也用作分隔符,我们需要找到另一个策略
告知 camel bindy 如何处理此问题单。要使用逗号定义包含数据的字段,您可以使用 simple 或双引号
作为分隔符(例如:'10'、'Street 10、NY'、'USA' 或 "10", "Street 10, NY", "USA")。
Remark :在这种情况下,该行的第一个和最后一个字符(即简单或双引号)将通过 bindy 删除
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15" 2500","USD","08-01-2009"
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
@CsvRecord( separator = "\",\"" )
public Class Order {
}
@CsvRecord( separator = "\",\"" )
public Class Order {
}
从 Camel 2.8.3/2.9 或 never bindy 将自动检测记录是否用单引号或双引号括起来,并在从 CSV 变为对象时自动删除这些引号。因此 ,不要在 分隔符中包含引号,但简单操作如下:
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15" 2500","USD","08-01-2009"
"10","J","Pauline"," M","XD12345678","Fortis Dynamic 15,15"
2500","USD","08-01-2009"
@CsvRecord( separator = "," )
public Class Order {
}
@CsvRecord( separator = "," )
public Class Order {
}
请注意,如果要将对象与 CSV 总结和使用引号,则需要使用 @CsvRecord 上的 quote 属性来指定要使用的引号字符:
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
@CsvRecord( separator = ",", quote = "\"" )
public Class Order {
}
问题单 5: : 分隔符和跳过优先行
当客户端希望在文件的第一行中时,特性很有趣,数据字段的名称是:
订单 ID、客户端 ID、名字、姓氏、是代码、工具名称、数量、货币、日期
要告知 bindy,在解析过程中必须跳过此第一行,然后我们使用属性 :
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
@CsvRecord(separator = ",", skipFirstLine = true)
public Class Order {
}
case 6 : generateHeaderColumns
要在生成 CSV 的第一行中添加,属性 generateHeaderColumns 必须设为 true,如此注解所示:
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}
@CsvRecord( generateHeaderColumns = true )
public Class Order {
}
因此,在 unmarshaing 过程中,Bindy 将生成 CSV,如 :
订单 ID、客户端 ID、名字、姓氏、是代码、工具名称、数量、货币、日期
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009
10, J, Pauline, M, XD12345678, Fortis Dynamic 15/15, 2500, USD,08-01-2009
案例 7:回车时返回
如果 camel-bindy 的平台将不会运行 Windows,但 Macintosh 或 Unix 将不会更改 crlf 属性,如下所示。提供三个值:WINDOWS、UNIX 或 MAC
@CsvRecord(separator = ",", crlf="MAC")
public Class Order {
}
@CsvRecord(separator = ",", crlf="MAC")
public Class Order {
}
另外,如果由于某种原因需要添加不同的行结尾字符,您可以选择使用 crlf 参数指定它。在以下示例中,我们可以使行以逗号加换行符结尾:
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
@CsvRecord(separator = ",", crlf=",\n")
public Class Order {
}
case 8 : isOrdered
有时,从模型创建 CSV 记录时要遵循的顺序与解析过程中使用的顺序不同。然后,在这种情况下,我们可以使用 isOrdered = true 来指明此属性与 DataField 注解的属性 'position' 结合使用。
Remark:pos 用于解析文件,流,而位置用于生成 CSV
48.5. 2.Link 复制链接链接已复制到粘贴板!
通过链接注解,可以将对象链接到一起。
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| Link | all | class 和 Property |
| 参数名称 | type | info |
|---|---|---|
| linkType | LinkType | 可选 - 默认情况下,值为 LinkType.oneToOne - 因此,您不同意提到它 |
只允许一对一关系。
例如:如果模型类客户端链接到订单类,请在 Order 类中使用注解 Link,如下所示:
属性链接
对于类客户端 :
类链接
@Link
public class Client {
}
@Link
public class Client {
}
48.6. 3.DataField 复制链接链接已复制到粘贴板!
DataField 注释定义字段的属性。每个数据字段都由其在记录中的位置、类型(字符串、int、date、…)以及可选的模式识别
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| DataField | all | 属性 |
| 参数名称 | type | info |
|---|---|---|
| pos | int | mandatory - 字段的输入 位置。从 1 到 … - 的数字号 - 查看位置参数。 |
| pattern | 字符串 | 可选 - 默认值 = "" - 将用于格式化 Decimal、Date、 |
| length | int | 可选 - 代表固定长度格式的字段长度 |
| 精度 | int | 可选 - 代表在完成 12 月号将被格式化/解析时的精度 |
| pattern | 字符串 | 可选 - 默认值 = "" - 供 Java 格式程序使用(例如:SimpleDateFormat)格式/无效数据。如果使用模式,则建议在 bindy 数据格式中设置 locale。设置为已知区域设置,如 "us",或使用 "default" 来使用平台默认区域设置。请注意,"default"需要 Camel 2.14/2.13.3/2.12.5。 |
| position | int | 可选 - 当 CSV 生成的 CSV 中字段的位置(输出消息)的位置必须与输入位置不同(pos)时,必须使用。请参阅 pos 参数。 |
| required | 布尔值 | optional - default value = "false" |
| trim | 布尔值 | optional - default value = "false" |
| defaultValue | 字符串 | Camel 2.10: 可选 - 默认值 = "" - 定义对应 CSV 字段为空/不可用时字段的默认值 |
| impliedDecimalSeparator | 布尔值 | Camel 2.11: 可选 - 默认值 = "false" - 如果指定位置有小点表示 |
| lengthPos | int | Camel 2.11 :可选 - 可用于识别固定长度为固定长度的固定记录中的数据字段 |
| 对齐 | 字符串 | 可选 - 默认值 = "R" - 将文本附加到右或保留在固定长度字段中。使用 'R' 或 'L' 的值。 |
| delimiter | 字符串 | Camel 2.11: 可选 - 可用于在固定长度记录中分离可变长度字段的末尾 |
case 1 : pos
此参数/attribute 代表 csv 记录中字段的位置
位置
如您在本例中看到的那样,位置从 '1' 开始,但在类 Order 中继续为 '5'。从 '2' 到 '4' 的数字在类客户端中定义(请参见下文之后)。
在另一个模型类中继续位置
case 2 : pattern
模式允许增强或验证数据格式
pattern
案例 3:精准
当您想定义数字的十进制部分时,精度非常有用
精度
问题单 4:输出中的 Position 不同
position 属性将告知绑定如何在生成的 CSV 记录中放置字段。默认情况下,使用的位置与通过属性 'pos' 定义的位置对应。如果位置不同(即,我们有一种可以比可以使用"组成"比较出的统计处理过程对比)来说明这一点。
下面是一个示例
输出中位置不同
注释 @DataField 的此属性必须与属性 isOrdered = true 结合使用。
问题单 5:必需
如果字段是必须的,只需使用将属性 'required' 设为 true
必需
如果记录中没有此字段,解析器会使用以下信息来引发错误:
有些字段缺失(可选或强制),行:
case 6 : trim
如果字段具有前应该删除的前导和/或尾随空格,只需将属性 'trim' 设置为 true
Trim
case 7 : defaultValue
如果未定义字段,则使用 defaultValue 属性指示的值
默认值
此属性仅适用于可选字段。
48.7. 4.FixedLengthRecord 复制链接链接已复制到粘贴板!
FixedLengthRecord 注解用于标识模型的根类。它代表记录 = 包含已固定长度的文件/消息的行,并可链接到多个子类。这个格式是字段中的一个特定用法数据,可以与右或左键一致。
当数据的大小不会完全填写字段的长度时,我们可以添加"padd"字符。
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| FixedLengthRecord | FIXED | 类 |
| 参数名称 | type | info |
|---|---|---|
| crlf | 字符串 | 可选 - 可能的值 = WINDOWS、UNIX、MAC 或 custom; 默认值。WINDOWS - 允许定义要使用的回车字符。如果您指定之前列出的三个值以外的值,则输入(custom)的值将用作 CRLF 字符。这个选项只在 marshalling 期间使用,而 unmarshalling 使用系统默认 JDK 提供行分隔符,除非 eol 已自定义 |
| EOL | 字符串 | 可选 - default="",它是一个空字符串。字符用于在未编出时(可选 - default = "" )在每条记录后结束行结束,这将帮助 JDK 提供默认的 JDK 提供行分隔符,除非提供任何其他行分隔符)。这个选项只适用于 unmarshalling,其中 marshalling 使用系统默认的分隔符作为"WINDOWS",除非提供任何其他值 |
| paddingChar | char | mandatory - 默认值 = ' ' |
| length | int | mandatory = 固定长度记录的大小 |
| hasHeader | 布尔值 | Camel 2.11 - 可选 - 表明此类型的记录前面是文件 / 流开头的单个标头记录 |
| hasFooter | 布尔值 | Camel 2.11 - 可选 - 表明此类型的记录可能后跟文件 / stream 末尾的单个 footer 记录 |
| skipHeader | 布尔值 | Camel 2.11 - 可选 - 配置数据格式,以跳过标题记录的 marshalling / unmarshalling。在主记录(例如,而不是标题或页脚)上配置此参数。 |
| skipFooter | 布尔值 | Camel 2.11 - 可选 - 配置数据格式,以跳过页脚记录的总结/未总结,在主记录(例如,而不是标头或 footer)上配置此参数。 |
| isHeader | 布尔值 | Camel 2.11 - 可选 - 识别这个 FixedLengthRecord 作为标头记录 |
| isFooter | 布尔值 | Camel 2.11 - 可选 - 识别这个 FixedLengthRecords 作为页脚记录 |
| ignoreTrailingChars | 布尔值 | Camel 2.11.1 - 可选 - 在卸载 / 解析时,可以忽略最后一个映射文件以外的字符。 此注解与模型的 root 类关联,必须声明一个时间。 |
hasHeader/hasFooter 参数与Header/isFooter 相互排斥。记录不可是标题/页脚和主固定长度记录。
问题单 1:简单固定长度记录
这个简单示例演示了如何设计模型来解析/格式固定的信息
10A9PaulineMISINXD12345678BUYShare2500.45USD01-08-2009
10A9PaulineMISINXD12345678BUYShare2500.45USD01-08-2009
fixed-simple
问题单 2:修复长度记录,并提供对齐和 padding
这更详细地阐述了如何定义字段的对齐以及如何分配 padding 字符,该字符是"这里"
10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009
10A9 PaulineM ISINXD12345678BUYShare2500.45USD01-08-2009
fixed-padding-align
案例 3:字段 padding
有时,为记录定义的 default padding 不能应用于字段,因为我们想使用 '0' 而非 '' 添加内容格式。在这种情况下,您可以在模型中使用属性 paddingField 来设置这个值。
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
fixed-padding-field
案例 4:使用分隔符修复长度
修复了长度记录,有时在记录中包含分隔的内容。firstName 和 lastName 字段使用以下示例中的 '^' 字符分隔:
10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9Pauline^M^ISINXD12345678BUYShare000002500.45USD01-08-2009
固定分隔
从 Camel 2.11 开始,固定长度记录中的 'pos' 值可以选择使用 或dinal 定义,顺序值而不是精确列号。
问题单 5:使用记录定义字段长度的修复长度
有时,固定长度记录可能包含用于定义相同记录中另一个字段的预期长度的字段。在以下示例中,instrumentNumber 字段值的长度由记录中的 instrumentNumberLen 字段的值定义。
10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009
10A9Pauline^M^ISIN10XD12345678BUYShare000002500.45USD01-08-2009
固定分隔
问题单 6:带有标题和页脚修复长度记录
Bindy 将发现配置为模型的一部分配置的固定长度标题和 footer 记录 - 提供注解类存在于与主 @FixedLengthRecord 类或其中一个配置的扫描软件包中。以下文本演示了两个固定长度记录,这些记录由标题记录和页脚记录进行编码。
101-08-2009 10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009 10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009 9000000002
101-08-2009
10A9 PaulineM ISINXD12345678BUYShare000002500.45USD01-08-2009
10A9 RichN ISINXD12345678BUYShare000002700.45USD01-08-2009
9000000002
fixed-header-and-footer-main-class
case 7 :解析固定长度记录时跳过内容。(Camel 2.11.1)
通常与提供固定长度记录(包含目标用例所需信息)的系统集成很常见。在这种情况下,跳过声明并解析我们不需要的这些字段。为 accomodate,如果下一个声明字段的 'pos' 值超出最后一个解析字段的光标位置,则 Bindy 将跳过至记录中的下一个映射字段。将绝对的 'pos' 位置用于感兴趣的字段(而不是 或dinal 值)会导致 Bindy 跳过两个字段之间的内容。
同样,除某些字段之外的内容都可能值得关注。在这种情况下,您可以通过在 @FixedLengthRecord 声明上设置 ignoreTrailingChars 属性来跳过除最后映射字段以外的任何内容的解析。
48.8. 5.消息 复制链接链接已复制到粘贴板!
Message 注解用于标识您的模型的类,它们将包含键值对字段。这种格式主要用于财务交换协议信息(修复)。不过,此注解可用于通过密钥识别数据的任何其他格式。密钥对值互相分隔,可以是一个特殊字符(如 tab delimitor (unicode 表示 : \u0009))或开始标题(unicode representation : \u0001)
*"FIX information"*
*"FIX information"*
有关修复的更多信息可在此网站上找到:http://www.fixprotocol.org/ http://www.fixprotocol.org/要使用 FIX 消息,模型必须包含与根消息类关联的标头和 Trailer 类,这些类可以是 Order 类。这不是强制性,但当您使用 camel-bindy 和 camel-fix (基于快速Fix 项目 http://www.quickfixj.org/ )的修复网关时,将非常有用。
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| 消息 | 键值对 | 类 |
| 参数名称 | type | info |
|---|---|---|
| pairSeparator | 字符串 | mandatory - 可以是 '=' 或 ';' 或 'anything' |
| keyValuePairSeparair | 字符串 | mandatory - 可以是 '\u0001'、'\u0009'、'#' 或 'anything' |
| crlf | 字符串 | 可选 - 可能的值 = WINDOWS、UNIX、MAC 或 custom;默认值 = WINDOWS - 允许定义要使用的回车字符。如果您指定之前列出的三个值,则输入(custom)的值将用作 CRLF 字符。 |
| type | 字符串 | 可选 - 定义消息类型(例如 FIX、EMX、…) |
| version | 字符串 | 可选 - 消息的版本(如 4.1) |
| isOrdered | 布尔值 | 可选 - 默认值 = false - 允许在生成 FIX 消息时更改字段的顺序。此注解与模型的 message 类关联,必须声明一个时间。 |
case 1 : separator = 'u0001'
用于隔离 FIX 消息中的键值对字段的分隔符为 ASCII '01' 字符或 unicode 格式 '\u0001'。此字符必须再次转义,以避免 java 运行时错误。下面是一个示例:
8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01 22=4 ...
8=FIX.4.1 9=20 34=1 35=0 49=INVMGR 56=BRKR 1=BE.CHM.001 11=CHM0001-01
22=4 ...
以及如何使用注解
FIX - 消息
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
}
@Message(keyValuePairSeparator = "=", pairSeparator = "\u0001", type="FIX", version="4.1")
public class Order {
}
*Look at test cases*
*Look at test cases*
Tab、… 等 ASCII 字符无法在 WIKI 页面中显示。因此,请仔细查看 camel-bindy 的测试案例,以准确了解 FIX 消息的显示方式(src\test\data\fix\fix.txt)和 Order, Trailer, Header 类(src\test\java\org\apache\camel\dataformat\bindy\model\fix\fix.java)
48.9. 6.KeyValuePairField 复制链接链接已复制到粘贴板!
KeyValuePairField 注释定义键值对字段的 属性。每个 KeyValuePairField 由一个标签(= key)及其关联的值(字符串、int、date、…)标识,可选模式,以及字段(如果需要)
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| KeyValuePairField | Key Value Pair - FIX | 属性 |
| 参数名称 | type | info |
|---|---|---|
| tag | int | mandatory - 标识消息中字段的数字号 - 必须是唯一的 |
| pattern | 字符串 | 可选 - 默认值 = "" - 将用于格式化 Decimal、Date、… |
| 精度 | int | 可选 - 数字号 - 代表当拒绝号被格式化/parsed 时使用的精度 |
| position | int | 可选 - 当 FIX 消息中的键/标签的位置必须不同时,必须使用 |
| required | 布尔值 | optional - default value = "false" |
| impliedDecimalSeparator | 布尔值 | Camel 2.11: 可选 - 默认值 = "false" - 如果指定位置有小点表示 |
case 1 : tag
此参数表示消息中字段的键
FIX 消息 - Tag
案例 2:输出中的不同位置
如果我们将放置在 FIX 消息的标签/键必须按照预定义的顺序排序,则使用注释 @KeyValuePairField 的属性 'position'
FIX 消息 - Tag - sort
48.10. 7.节 复制链接链接已复制到粘贴板!
在修复固定长度记录消息中,通常会在信息 : 标头、正文和部分表示有不同的部分。注释 @Section 的目的是告知绑定模型的哪个类代表标题(= 第 1 部分)、正文(= 部分 2 节)和 footer (= 第 3 节)
此注解仅存在一个属性/参数。
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| 节 | 修复 | 类 |
| 参数名称 | type | info |
|---|---|---|
| number | int | 标识部分位置的数字 |
案例 1:部分
标头部分的定义
FIX 消息 - 第 - Header
body 部分的定义
FIX 消息 - 第 - Body
footer 部分的定义
FIX 消息 - 第 - Footer
48.11. 8.OneToMany 复制链接链接已复制到粘贴板!
注释 @OneToMany 的目的是允许使用 List<?& gt; 字段定义 POJO 类或包含重复组的记录。
*Restrictions OneToMany*
*Restrictions OneToMany*
请注意,一个到许多绑定的绑定都不允许处理在层次结构的多个级别上定义的重复数据
在以下情况下,根据以下情况的关系:
- 阅读包含重复组(=组 tags/keys)的修复消息
- 使用重复数据生成 CSV
| 注解名称 | 记录类型 | 级别 |
|---|---|---|
| OneToMany | all | 属性 |
| 参数名称 | type | info |
|---|---|---|
| mappedTo | 字符串 | 可选 - string - 与 Class> 的 List<Type 关联的类名称 |
问题单 1:生成带有重复数据的 CSV
以下是我们想要的 CSV 输出:
Claus,Ibsen,Camel in Action 1,2010,35 Claus,Ibsen,Camel in Action 2,2012,35 Claus,Ibsen,Camel in Action 3,2013,35 Claus,Ibsen,Camel in Action 4,2014,35
Claus,Ibsen,Camel in Action 1,2010,35
Claus,Ibsen,Camel in Action 2,2012,35
Claus,Ibsen,Camel in Action 3,2013,35
Claus,Ibsen,Camel in Action 4,2014,35
Remark:与本书的标题及其发布日期有关的重复数据,而姓氏、姓氏和年龄是通用的
和用于建模的类。Author 类包含 Book 的列表。
使用重复数据生成 CSV
非常简单!!
案例 2:读取修复消息,包含标签/密钥组
以下是希望在我们的模型中处理的消息:
标签 22、48 和 54 正在重复
和代码
阅读包含一组 tags/keys 组的 FIX 消息
48.12. 9.BindyConverter 复制链接链接已复制到粘贴板!
注释 @BindyConverter 定义了要在字段级别使用转换器。提供的类必须实施 Format 接口。
48.13. 10.FormatFactories 复制链接链接已复制到粘贴板!
注释 @FormatFactories 的目的是在记录级别定义一组转换器。提供的类必须实施 FormatFactoryInterface 接口。
48.14. 支持的 Datatypes 复制链接链接已复制到粘贴板!
DefaultFormatFactory 通过基于提供的 FormattingOptions 返回接口 FormatFactoryInterface 实例来格式化以下数据类型:
- BigDecimal
- BigInteger
- 布尔值
- Byte
- 字符
- Date
- 双
- 枚举
- 浮点值
- 整数
- LocalDate (自 2.18.0 起运行 8)
- LocalDateTime (java 8, since 2.18.0)
- localtime (java 8 since 2.18.0)
- Long
- 短
- 字符串
可以通过在使用的 registry 中提供 FactoryRegistry 实例(如 spring 或 JNDI)来覆盖 DefaultFormatFactory。
48.15. 使用 Java DSL 复制链接链接已复制到粘贴板!
下一步包含与这个记录类型关联的 DataFormat bindy 类,并提供 Java 软件包名称作为参数。
例如,以下使用类 BindyCsvDataFormat (与 CSV 记录类型关联的类对应),该类使用 com.acme.model 软件包名称来初始化在这个软件包中配置的模型对象。
48.15.1. 设置区域设置 复制链接链接已复制到粘贴板!
Bindy 支持在 dataformat 上配置区域设置,例如
或者使用平台默认区域设置,然后使用 "default" 作为区域设置。请注意,这需要 Camel 2.14/2.13.3/2.12.5。
对于旧版本的版本,您可以按照如下所示使用 Java 代码来设置它
48.15.2. unmarshaling 复制链接链接已复制到粘贴板!
from("file://inbox")
.unmarshal(bindy)
.to("direct:handleOrders");
from("file://inbox")
.unmarshal(bindy)
.to("direct:handleOrders");
另外,您可以使用命名的引用来指代数据格式,然后可以在 Registry 中定义,如 Spring XML 文件:
from("file://inbox")
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
from("file://inbox")
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
Camel 路由将提取 inbox 目录中的文件,将未编出 CSV 记录到模型对象集合中,并将集合
发送到由"handleOrders"引用的路由。
返回的集合是一个 Map 对象列表。列表中的每个映射都包含在 CSV 每行中汇总的模型对象。其背后的原因是 每行可以对应于多个对象。当您只期望一行返回一个对象时,这可能会造成混淆。
每个对象都可以使用其类名称来检索。
假设您要从此映射中提取单个 Order 对象以便在路由中处理,您可以使用 Splitter 和 Processor 的组合,如下所示:
请注意,Bindy 使用 CHARSET_NAME 属性或 CHARSET_NAME 标头(在 Exchange 界面中定义)来进行为 unmarshalling 收到的输入流的字符转换。在某些制作者(如 file-endpoint)中,您可以定义字符集。此制作者已经实现的字符集转换。有时,您需要在交换中删除此属性或标头,然后将其发送到 unmarshal。如果您没有删除转换,则可能需要两次执行转换可能会导致不必要的结果。
from("file://inbox?charset=Cp922")
.removeProperty(Exchange.CHARSET_NAME)
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
from("file://inbox?charset=Cp922")
.removeProperty(Exchange.CHARSET_NAME)
.unmarshal("myBindyDataFormat")
.to("direct:handleOrders");
48.15.3. marshaling 复制链接链接已复制到粘贴板!
要从模型对象集合生成 CSV 记录,请创建以下路由:
from("direct:handleOrders")
.marshal(bindy)
.to("file://outbox")
from("direct:handleOrders")
.marshal(bindy)
.to("file://outbox")
48.16. 使用 Spring XML 复制链接链接已复制到粘贴板!
这非常容易使用 Spring 作为您首选的 DSL 语言,以声明要用于 camel-bindy 的路由。以下示例显示两个路由,第一条将从文件中选取记录,取消汇总内容并将其绑定到其模型。然后,结果会发送到 pojo(没有任何特殊情况),并将它们放入队列。
第二个路由将从队列中提取 pojos,并汇总内容,以生成包含 csv 记录的文件。上面的例子是使用 Camel 2.16 开始的。
Spring dsl
请验证您的模型类是否实现序列化,否则队列管理器将引发错误
48.17. 依赖项 复制链接链接已复制到粘贴板!
要在 camel 路由中使用 Bindy,需要添加对 camel-bindy 的依赖来实施此数据格式。
如果您使用 maven,只需在 pom.xml 中添加以下内容,替换最新和最高版本的版本号(请参阅最新版本的下载页面)。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-bindy</artifactId> <version>x.x.x</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bindy</artifactId>
<version>x.x.x</version>
</dependency>
第 49 章 将 OSGi 蓝图与 Camel 搭配使用 复制链接链接已复制到粘贴板!
已创建一个用于 Blueprint 的自定义 XML 命名空间,以便让您充分利用 nice XML 死机。由于 Blueprint 自定义命名空间尚未标准化,但这个命名空间只能用于 Apache Aries Blueprint 实施,后者是 Apache Karaf 所用命名空间。
49.1. 概述 复制链接链接已复制到粘贴板!
XML 模式大体与 Spring 的选项基本相同,因此所有引用 Spring XML 的文档中的 xml 代码段也适用于 Blueprint 路由。
以下是使用蓝图的简单路由定义:
此时,支持的 xml 元素(专用于 Spring xml 语法)有一些限制:
- beanPostProcessor 特定于 Spring,不允许
但是,当您在 OSGi 环境中部署应用程序时,使用蓝图有几个优点:
- 当升级到新的 camel 版本时,您不必更改命名空间,因为正确的版本将根据捆绑包导入的 camel 软件包来选择。
- 对自定义命名空间和捆绑包没有启动排序问题
- 您可以使用 Blueprint 属性占位符
49.2. 使用 camel-blueprint 复制链接链接已复制到粘贴板!
要在 OSGi 中利用 camel-blueprint,除了 camel-core 及其依赖软件包外,您还需要 Aries Blueprint 捆绑包和 camel-blueprint 捆绑包。
如果使用 Karaf,您可以使用名为 camel-blueprint 的功能,它将安装所有所需的捆绑包。
第 50 章 Bonita Component 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.19 可用
用于与远程 Bonita BPM 流程引擎通信。
50.1. URI 格式 复制链接链接已复制到粘贴板!
bonita://[operation]?[options]
bonita://[operation]?[options]
其中 operation 是要在 Bonita 上执行的特定操作。
50.2. 常规选项 复制链接链接已复制到粘贴板!
Bonita 组件没有选项。
Bonita 端点使用 URI 语法进行配置:
bonita:operation
bonita:operation
使用以下路径和查询参数:
50.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| operation | 要使用 所需的操作 | BonitaOperation |
50.2.2. 查询参数(9 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| hostname (consumer) | 运行 Bonita 引擎的主机名 | localhost | 字符串 |
| port (consumer) | 服务器托管 Bonita 引擎的端口 | 8080 | 字符串 |
| processName (consumer) | 操作中涉及的进程的名称 | 字符串 | |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| 密码 (安全) | 用于向 Bonita 引擎进行身份验证的密码。 | 字符串 | |
| username (security) | 向 Bonita 引擎进行身份验证的用户名。 | 字符串 |
50.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 2 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.bonita.enabled | 启用 bonita 组件 | true | 布尔值 |
| camel.component.bonita.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
50.4. 正文内容 复制链接链接已复制到粘贴板!
对于 startCase 操作,输入变量是从正文消息中检索。这个方法必须包含一个 Map<String,Serializable>。
50.5. 例子 复制链接链接已复制到粘贴板!
以下示例在 Bonita 中启动新的问题单:
from("direct:start").to("bonita:startCase?hostname=localhost&port=8080&processName=TestProcess&username=install&password=install")
from("direct:start").to("bonita:startCase?hostname=localhost&port=8080&processName=TestProcess&username=install&password=install")
50.6. 依赖项 复制链接链接已复制到粘贴板!
要在 Camel 路由中使用 Bonita,您需要添加实施该组件的 camel-bonita 的依赖项。
如果您使用 Maven,您只需在 pom.xml 中添加以下内容,将最新和最大版本的版本号替换(请参阅最新版本下载页面)。
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-bonita</artifactId> <version>x.x.x</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-bonita</artifactId>
<version>x.x.x</version>
</dependency>
第 51 章 Boon DataFormat 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.16 可用
boon 是一个数据格式,它使用 Boon JSON marshalling 库将 JSON 有效负载分到 Java 对象,或将 JSON 对象聚合到 JSON 有效负载中。boon 旨在比当前使用的其他常见 解析器是一个简单而快速的 解析器。
51.1. 选项 复制链接链接已复制到粘贴板!
Boon dataformat 支持 3 个选项,它们如下。
| 名称 | 默认 | Java 类型 | 描述 |
|---|---|---|---|
| unmarshalTypeName |
| 取消armshalling 时要使用的 java 类型的类名称 | |
| useList |
|
| 要取消与映射列表或 Pojo 列表相关的内容。 |
| contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 |
51.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 4 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.dataformat.boon.content-type-header | 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 | false | 布尔值 |
| camel.dataformat.boon.enabled | 启用 boon 数据格式 | true | 布尔值 |
| camel.dataformat.boon.unmarshal-type-name | 取消armshalling 时要使用的 java 类型的类名称 | 字符串 | |
| camel.dataformat.boon.use-list | 要取消与映射列表或 Pojo 列表相关的内容。 | false | 布尔值 |
ND
51.3. 使用 Java DSL 复制链接链接已复制到粘贴板!
DataFormat boonDataFormat = new BoonDataFormat("com.acme.model.Person");
from("activemq:My.Queue")
.unmarshal(boonDataFormat)
.to("mqseries:Another.Queue");
DataFormat boonDataFormat = new BoonDataFormat("com.acme.model.Person");
from("activemq:My.Queue")
.unmarshal(boonDataFormat)
.to("mqseries:Another.Queue");
51.4. 使用 Blueprint XML 复制链接链接已复制到粘贴板!
51.5. 依赖项 复制链接链接已复制到粘贴板!
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-boon</artifactId> <version>x.x.x</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-boon</artifactId>
<version>x.x.x</version>
</dependency>
第 52 章 box 组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.14 可用
Box 组件提供对可通过 https://github.com/box/box-java-sdk 访问的所有 Box.com API 的访问。它允许生成消息来上传和下载文件,创建、编辑和管理文件夹等。它还支持 API,允许轮询用户帐户以及企业帐户更改等。
box.com 要求使用 OAuth2.0 进行所有客户端应用程序身份验证。要使用您帐户的 camel-box,您需要在 Box.com 中创建一个新应用程序,地址为 https://developer.box.com。Box 应用的客户端 ID 和机密将允许访问需要当前用户的 Box API。用户访问令牌由最终用户的 API 生成和管理。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-box</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-box</artifactId>
<version>${camel-version}</version>
</dependency>
52.1. 连接身份验证类型 复制链接链接已复制到粘贴板!
Box 组件支持三种不同类型的身份验证的连接。
52.1.1. 标准身份验证 复制链接链接已复制到粘贴板!
标准身份验证 使用 OAuth 2.0 三组身份验证过程 通过 Box.com 验证其连接。这种类型的身份验证可让 Box 受管用户和 外部用户 通过 Box 组件访问、编辑并保存其 Box 内容。
52.1.2. 应用程序企业身份验证 复制链接链接已复制到粘贴板!
应用 企业身份验证 使用 OAuth 2.0 和 JSON Web 令牌(JWT),将其连接验证为 Box 应用的 服务帐户。这种类型的身份验证可让服务帐户访问、编辑并保存其 Box 应用的 Box 内容(通过 Box 组件)。
52.1.3. 应用程序用户身份验证 复制链接链接已复制到粘贴板!
应用程序 用户身份验证 使用带有 JSON Web 令牌(JWT)的 OAuth 2.0,将其连接验证为 Box 应用的 App User。这种类型的身份验证可让 应用程序 用户访问、编辑并保存其 Box 内容(通过 Box 组件)。
52.2. 选框选项 复制链接链接已复制到粘贴板!
Box 组件支持 2 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| configuration (common) | 使用共享配置 | BoxConfiguration | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Box 端点使用 URI 语法进行配置:
box:apiName/methodName
box:apiName/methodName
使用以下路径和查询参数:
52.2.1. 路径名(2 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| apiName | 需要 什么操作才能执行 | BoxApiName | |
| methodName | 所选操作需要什么子操作 | 字符串 |
52.2.2. 查询参数(20 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| clientId (common) | box 应用程序客户端 ID | 字符串 | |
| enterpriseId (common) | 用于 App Enterprise 的企业 ID。 | 字符串 | |
| inBody (common) | 设置在 Exchange In Body 中传递的参数名称 | 字符串 | |
| userId (common) | 用于应用程序用户的用户 ID。 | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| httpParams (advanced) | 自定义 HTTP 参数用于代理主机等设置 | map | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| accessTokenCache (security) | 用于存储和检索访问令牌的自定义访问令牌。 | IAccessTokenCache | |
| clientSecret (security) | box 应用程序客户端 secret | 字符串 | |
| encryptionAlgorithm (security) | JWT 加密算法的类型。支持 Algorithms: RSA_SHA_256 RSA_SHA_384 RSA_SHA_512 | RSA_SHA_256 | EncryptionAlgorithm |
| maxCacheEntries (security) | 缓存中访问令牌的最大数量。 | 100 | int |
| authenticationType (authentication) | 用于连接的验证类型。身份验证类型:STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - 带有 JSON Web 令牌的 OAuth 2.0 | APP_USER_AUTHENTICATION | 字符串 |
| privateKeyFile (security) | 生成 JWT 签名的私钥。 | 字符串 | |
| privateKeyPassword (security) | 私钥的密码。 | 字符串 | |
| publicKeyId (security) | 验证 JWT 签名的公钥 ID。 | 字符串 | |
| sslContextParameters (security) | 使用 SSLContextParameters 配置安全性。 | SSLContextParameters | |
| userName (security) | box 用户名,提供 MUST | 字符串 | |
| userPassword (security) | box 用户密码,如果未设置 authSecureStorage,或者在第一次调用时返回 null,则需要提供 MUST | 字符串 |
52.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 17 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.box.configuration.access-token-cache | 用于存储和检索访问令牌的自定义访问令牌。 | IAccessTokenCache | |
| camel.component.box.configuration.api-name | 要执行的操作种类 | BoxApiName | |
| camel.component.box.configuration.authentication-type | 用于连接的验证类型。身份验证类型:STANDARD_AUTHENTICATION - OAuth 2.0 (3-legged) SERVER_AUTHENTICATION - 带有 JSON Web 令牌的 OAuth 2.0 | APP_USER_AUTHENTICATION | 字符串 |
| camel.component.box.configuration.client-id | box 应用程序客户端 ID | 字符串 | |
| camel.component.box.configuration.client-secret | box 应用程序客户端 secret | 字符串 | |
| camel.component.box.configuration.enterprise-id | 用于 App Enterprise 的企业 ID。 | 字符串 | |
| camel.component.box.configuration.http-params | 自定义 HTTP 参数用于代理主机等设置 | map | |
| camel.component.box.configuration.method-name | 用于所选操作的子操作 | 字符串 | |
| camel.component.box.configuration.private-key-file | 生成 JWT 签名的私钥。 | 字符串 | |
| camel.component.box.configuration.private-key-password | 私钥的密码。 | 字符串 | |
| camel.component.box.configuration.public-key-id | 验证 JWT 签名的公钥 ID。 | 字符串 | |
| camel.component.box.configuration.ssl-context-parameters | 使用 SSLContextParameters 配置安全性。 | SSLContextParameters | |
| camel.component.box.configuration.user-id | 用于应用程序用户的用户 ID。 | 字符串 | |
| camel.component.box.configuration.user-name | box 用户名,提供 MUST | 字符串 | |
| camel.component.box.configuration.user-password | box 用户密码,如果未设置 authSecureStorage,或者在第一次调用时返回 null,则需要提供 MUST | 字符串 | |
| camel.component.box.enabled | 启用 box 组件 | true | 布尔值 |
| camel.component.box.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
52.4. URI 格式 复制链接链接已复制到粘贴板!
box:apiName/methodName
box:apiName/methodName
apiName 可以是以下之一:
- 协作
- 注释
- event-logs
- files
- 文件夹
- groups
- 事件
- search
- tasks
- users
52.5. 制作者端点: 复制链接链接已复制到粘贴板!
制作者端点可以使用端点前缀,后跟下描述的端点名称和关联选项。简写别名可用于某些端点。端点 URI MUST 包含一个前缀。
不是必需的端点选项由 [] 表示。如果端点没有强制选项,则会提供一组 [] 选项 MUST。制作者端点也可以使用特殊选项 inBody ,它应当包含该端点选项的名称,其值将包含在 Camel Exchange In 消息中。
端点 URI 中都可以提供任何端点选项,或者在消息标头中动态提供。消息标头名称必须是 CamelBox.<option> 的格式。请注意, inBody 选项会覆盖消息标头,例如, Body=option 中的 endpoint 选项会覆盖 CamelBox.option 标头。
如果没有为端点 URI 中的选项 defaultRequest 提供值,则它将假定为 null。请注意,只有其它选项不满足匹配的端点时,才会使用 null 值。
如果是 Box API 错误,端点将使用 com.box.sdk.BoxAPIException 派生异常原因抛出 RuntimeCamelException。
52.5.1. 端点前缀 协作 复制链接链接已复制到粘贴板!
有关 Box 协作的更多信息,请参阅 https://developer.box.com/reference#collaboration-object。 以下端点可以通过前缀 协作来调用, 如下所示:
box:collaborations/endpoint?[options]
box:collaborations/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| addFolderCollaboration | add | folderId、collaborator、role | com.box.sdk.BoxCollaboration |
| addFolderCollaborationByEmail | addByEmail | folderId, email, role | com.box.sdk.BoxCollaboration |
| deleteCollaboration | delete | collaborationId | |
| getFolderCollaborations | 协作 | folderId | java.util.Collection |
| getPendingCollaborations | pendingCollaborations | java.util.Collection | |
| getCollaborationInfo | info | collaborationId | com.box.sdk.BoxCollaboration.Info |
| updateCollaborationInfo | updateInfo | collaborationId, info | com.box.sdk.BoxCollaboration |
用于 协作的URI 选项
| 名称 | 类型 |
|---|---|
| collaborationId | 字符串 |
| collaborator | com.box.sdk.BoxCollaborator |
| role | com.box.sdk.BoxCollaboration.Role |
| folderId | 字符串 |
| | 字符串 |
| info | com.box.sdk.BoxCollaboration.Info |
52.5.2. 端点前缀 注释 复制链接链接已复制到粘贴板!
有关 Box 注释的更多信息,请参阅 https://developer.box.com/reference#comment-object。 以下端点可以通过前缀 注释 调用,如下所示:
box:comments/endpoint?[options]
box:comments/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| addFileComment | add | fileId, message | com.box.sdk.BoxFile |
| changeCommentMessage | updateMessage | commentId, message | com.box.sdk.BoxComment |
| deleteComment | delete | commentId | |
| getCommentInfo | info | commentId | com.box.sdk.BoxComment.Info |
| getFileComments | 注释 | fileId | java.util.List |
| replyToComment | 答复 | commentId, message | com.box.sdk.BoxComment |
用于 协作的URI 选项
| 名称 | 类型 |
|---|---|
| commentId | 字符串 |
| fileId | 字符串 |
| message | 字符串 |
52.5.3. endpoint Prefix events-logs 复制链接链接已复制到粘贴板!
有关 Box 事件日志的更多信息,请参阅 https://developer.box.com/reference#events。以下端点可以通过前缀 event-logs 调用,如下所示:
box:event-logs/endpoint?[options]
box:event-logs/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| getEnterpriseEvents | 事件 | 位置, after, before, [types] | java.util.List |
event-logs的 URI 选项
| 名称 | 类型 |
|---|---|
| position | 字符串 |
| 结束后 | Date |
| 之前 | Date |
| 类型 | com.box.sdk.BoxEvent.Types[] |
52.5.4. 端点前缀 文件 复制链接链接已复制到粘贴板!
有关 Box 文件的更多信息,请参阅 https://developer.box.com/reference#file-object。以下端点可以通过前缀 文件 调用,如下所示:
box:files/endpoint?[options]
box:files/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| uploadFile | 上传 | parentFolderId, 内容, fileName, [created], [modified], [size], [listener] | com.box.sdk.BoxFile |
| downloadFile | 下载 | fileId, output, [rangeStart], [rangeEnd], [listener] | java.io.OutputStream |
| copyFile | 复制 | fileId, destinationFolderId, [newName] | com.box.sdk.BoxFile |
| moveFile | Move | fileId, destinationFolderId, [newName] | com.box.sdk.BoxFile |
| renameFile | 重命名 | fileId, newFileName | com.box.sdk.BoxFile |
| createFileSharedLink | link | fileId, access, [unshareDate], [permissions] | com.box.sdk.BoxSharedLink |
| deleteFile | delete | fileId | |
| uploadNewFileVersion | uploadVersion | fileId, fileContent, [modified], [fileSize], [listener] | com.box.boxsdk.BoxFile |
| promoteFileVersion | promoteVersion | fileId, version | com.box.sdk.BoxFileVersion |
| getFileVersions | 版本 | fileId | java.util.Collection |
| downloadPreviousFileVersions | downloadVersion | fileId、version、output、[listener] | java.io.OutputStream |
| deleteFileVersion | deleteVersion | fileId, version | |
| getFileInfo | info | fileId, 字段 | com.box.sdk.BoxFile.Info |
| updateFileInfo | updateInfo | fileId, info | com.box.sdk.BoxFile |
| createFileMetadata | createMetadata | fileId, metadata, [typeName] | com.box.sdk.Metadata |
| getFileMetadata | metadata | fileId, [typeName] | com.box.sdk.Metadata |
| updateFileMetadata | updateMetadata | fileId, metadata | com.box.sdk.Metadata |
| deleteFileMetadata | deleteMetadata | fileId | |
| getDownloadUrl | url | fileId | java.net.URL |
| getPreviewLink | 预览 | fileId | java.net.URL |
| getFileThumbnail | 缩略图 | fileId, fileType, minWidth, minHeight, maxWidth, maxHeight | byte[] |
文件的URI 选项
| 名称 | 类型 |
|---|---|
| parentFolderId | 字符串 |
| content | java.io.InputStream |
| fileName | 字符串 |
| created | Date |
| modified | Date |
| size | Long |
| listener | com.box.sdk.ProgressListener |
| output | java.io.OutputStream |
| rangeStart | Long |
| rangeEnd | Long |
| outputStreams | java.io.OutputStream[] |
| destinationFolderId | 字符串 |
| newName | 字符串 |
| fields | String[] |
| info | com.box.sdk.BoxFile.Info |
| fileSize | Long |
| version | 整数 |
| access | com.box.sdk.BoxSharedLink.Access |
| unshareDate | Date |
| 权限 | com.box.sdk.BoxSharedLink.Permissions |
| fileType | com.box.sdk.BoxFile.ThumbnailFileType |
| minWidth | 整数 |
| minHeight | 整数 |
| maxWidth | 整数 |
| maxHeight | 整数 |
| metadata | com.box.sdk.Metadata |
| typeName | 字符串 |
52.5.5. 端点前缀 文件夹 复制链接链接已复制到粘贴板!
有关 Box 文件夹的更多信息,请参阅 https://developer.box.com/reference#folder-object。可以通过前缀 文件夹 调用以下端点,如下所示:
box:folders/endpoint?[options]
box:folders/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| getRootFolder | root | com.box.sdk.BoxFolder | |
| createFolder | create | parentFolderId, folderName | com.box.sdk.BoxFolder |
| createFolder | create | parentFolderId, path | com.box.sdk.BoxFolder |
| copyFolder | 复制 | folderId, destinationfolderId, [newName] | com.box.sdk.BoxFolder |
| moveFolder | Move | folderId, destinationFolderId, newName | com.box.sdk.BoxFolder |
| renameFolder | 重命名 | folderId、newFolderName | com.box.sdk.BoxFolder |
| createFolderSharedLink | link | folderId、access、[unsharedDate], [permissions] | java.util.List |
| deleteFolder | delete | folderId | |
| getFolder | folder | path | com.box.sdk.BoxFolder |
| getFolderInfo | info | folderId, 字段 | com.box.sdk.BoxFolder.Info |
| getFolderItems | items | folderId, offset, limit, 字段 | java.util.List |
| updateFolderInfo | updateInfo | folderId, info | com.box.sdk.BoxFolder |
文件夹的 URI Options
| 名称 | 类型 |
|---|---|
| path | String[] |
| folderId | 字符串 |
| offset | Long |
| limit | Long |
| fields | String[] |
| parentFolderId | 字符串 |
| folderName | 字符串 |
| destinationFolderId | 字符串 |
| newName | 字符串 |
| newFolderName | 字符串 |
| info | 字符串 |
| access | com.box.sdk.BoxSharedLink.Access |
| unshareDate | Date |
| 权限 | com.box.sdk.BoxSharedLink.Permissions |
52.5.6. 端点前缀 组 复制链接链接已复制到粘贴板!
有关 Box 组的更多信息,请参阅 https://developer.box.com/reference#group-object。以下端点可以通过前缀 组 调用,如下所示:
box:groups/endpoint?[options]
box:groups/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| createGroup | create | 名称, [provenance, externalSyncIdentifier, description, invitabilityLevel, memberViewabilityLevel] | com.box.sdk.BoxGroup |
| addGroupMembership | createMembership | GroupId, userId, role | com.box.sdk.BoxGroupMembership |
| deleteGroup | delete | groupId | |
| getAllGroups | groups | java.util.Collection | |
| getGroupInfo | info | groupId | com.box.sdk.BoxGroup.Info |
| updateGroupInfo | updateInfo | groupId, groupInfo | com.box.sdk.BoxGroup |
| addGroupMembership | addMembership | GroupId, userId, role | com.box.sdk.BoxGroupMembership |
| deleteGroupMembership | deleteMembership | groupMembershipId | |
| getGroupMemberships | 成员资格 | groupId | java.uti.Collection |
| getGroupMembershipInfo | membershipInfo | groupMemebershipId | com.box.sdk.BoxGroup.Info |
| updateGroupMembershipInfo | updateMembershipInfo | groupMemebershipId, info | com.box.sdk.BoxGroupMembership |
组的 URI 选项
| 名称 | 类型 |
|---|---|
| name | 字符串 |
| groupId | 字符串 |
| userId | 字符串 |
| role | com.box.sdk.BoxGroupMembership.Role |
| groupMembershipId | 字符串 |
| info | com.box.sdk.BoxGroupMembership.Info |
52.5.7. endpoint Prefix search 复制链接链接已复制到粘贴板!
有关 Box 搜索 API 的更多信息,请参阅 https://developer.box.com/reference#searching-for-content。 可以通过前缀 搜索 调用以下端点,如下所示:
box:search/endpoint?[options]
box:search/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| searchFolder | search | folderId, query | java.util.Collection |
用于 搜索的URI 选项
| 名称 | 类型 |
|---|---|
| folderId | 字符串 |
| query | 字符串 |
52.5.8. 端点前缀 任务 复制链接链接已复制到粘贴板!
有关 Box 任务的详情,请参考 https://developer.box.com/reference#task-object-1。以下端点可以通过前缀 任务 调用,如下所示:
box:tasks/endpoint?[options]
box:tasks/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| addFileTask | add | fileId, action, dueAt, [message] | com.box.sdk.BoxUser |
| deleteTask | delete | taskId | |
| getFileTasks | tasks | fileId | java.util.List |
| getTaskInfo | info | taskId | com.box.sdk.BoxTask.Info |
| updateTaskInfo | updateInfo | TaskID, info | com.box.sdk.BoxTask |
| addAssignmentToTask | addAssignment | TaskID, assignTo | com.box.sdk.BoxTask |
| deleteTaskAssignment | deleteAssignment | taskAssignmentId | |
| getTaskAssignments | 分配 | taskId | java.util.List |
| getTaskAssignmentInfo | assignmentInfo | taskAssignmentId | com.box.sdk.BoxTaskAssignment.Info |
任务的URI 选项
| 名称 | 类型 |
|---|---|
| fileId | 字符串 |
| action | com.box.sdk.BoxTask.Action |
| dueAt | Date |
| message | 字符串 |
| taskId | 字符串 |
| info | com.box.sdk.BoxTask.Info |
| assignTo | com.box.sdk.BoxUser |
| taskAssignmentId | 字符串 |
52.5.9. 端点前缀 用户 复制链接链接已复制到粘贴板!
有关 Box 用户的详情请参考 https://developer.box.com/reference#user-object。以下端点可使用前缀 用户 调用,如下所示:
box:users/endpoint?[options]
box:users/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| getCurrentUser | currentUser | com.box.sdk.BoxUser | |
| getAllEnterpriseOrExternalUsers | users | filterTerm, [fields] | com.box.sdk.BoxUser |
| createAppUser | create | name, [params] | com.box.sdk.BoxUser |
| createEnterpriseUser | create | login, name, [params] | com.box.sdk.BoxUser |
| deleteUser | delete | userid, notifyUser, force | |
| getUserEmailAlias | emailAlias | userId | com.box.sdk.BoxUser |
| deleteUserEmailAlias | deleteEmailAlias | userId, emailAliasId | java.util.List |
| getUserInfo | info | userId | com.box.sdk.BoxUser.Info |
| updateUserInfo | updateInfo | userid, info | com.box.sdk.BoxUser |
| moveFolderToUser | - | userId, sourceUserId | com.box.sdk.BoxFolder.Info |
用户的URI 选项
| 名称 | 类型 |
|---|---|
| defaultRequest | com.box.restclientv2.requestsbase.BoxDefaultRequestObject |
| emailAliasRequest | com.box.boxjavalibv2.requests.requestobjects.BoxEmailAliasRequestObject |
| emailId | 字符串 |
| filterTerm | 字符串 |
| folderId | 字符串 |
| simpleUserRequest | com.box.boxjavalibv2.requests.requestobjects.BoxSimpleUserRequestObject |
| userDeleteRequest | com.box.boxjavalibv2.requests.requestobjects.BoxUserDeleteRequestObject |
| userId | 字符串 |
| userRequest | com.box.boxjavalibv2.requests.requestobjects.BoxUserRequestObject |
| userUpdateLoginRequest | com.box.boxjavalibv2.requests.requestobjects.BoxUserUpdateLoginRequestObject |
52.6. 消费者端点: 复制链接链接已复制到粘贴板!
有关 Box 事件的更多信息,请参阅 https://developer.box.com/reference#events。消费者端点只能使用端点前缀 事件,如下一示例所示。
box:events/endpoint?[options]
box:events/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| 事件 | [startingPosition] | com.box.sdk.BoxEvent |
事件的 URI 选项
| 名称 | 类型 |
|---|---|
| startingPosition | Long |
52.7. 邮件标题 复制链接链接已复制到粘贴板!
任何选项都可以在带有 CamelBox. 前缀的制作者端点的消息标头中提供。
52.8. 邮件正文 复制链接链接已复制到粘贴板!
所有结果消息正文都使用 Box Java SDK 提供的对象。producer 端点可以在 inBody endpoint 参数中为传入消息正文指定选项名称。
52.9. 配置组件并启用身份验证 复制链接链接已复制到粘贴板!
要使用 Box 进行身份验证,如下例所示在组件上设置身份验证属性:
52.10. Samples 复制链接链接已复制到粘贴板!
以下路由将新文件上传到用户的根目录:
from("file:...")
.to("box://files/upload/inBody=fileUploadRequest");
from("file:...")
.to("box://files/upload/inBody=fileUploadRequest");
以下路由轮询用户的帐户以进行更新:
from("box://events/listen?startingPosition=-1")
.to("bean:blah");
from("box://events/listen?startingPosition=-1")
.to("bean:blah");
以下路由使用带有动态标头选项的制作者。 fileId 属性具有 Box 文件 id,output 属性具有文件内容的输出流,因此它们被分配到 CamelBox.fileId 标头和 CamelBox.output 标头,如下所示:
from("direct:foo")
.setHeader("CamelBox.fileId", header("fileId"))
.setHeader("CamelBox.output", header("output"))
.to("box://files/download")
.to("file://...");
from("direct:foo")
.setHeader("CamelBox.fileId", header("fileId"))
.setHeader("CamelBox.output", header("output"))
.to("box://files/download")
.to("file://...");
第 53 章 Braintree 组件 复制链接链接已复制到粘贴板!
作为 Camel 2.17 版提供
Braintree 组件提供对通过 Java SDK 引进 Braintree 支付 的访问。
所有客户端应用程序都需要 API 凭证来处理付款。要在您的帐户中使用 camel-braintree,您需要创建新的 Sandbox 或 Production 帐户。
Maven 用户需要在这些组件的 pom.xml 中添加以下依赖项:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-braintree</artifactId>
<version>${camel-version}</version>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-braintree</artifactId>
<version>${camel-version}</version>
</dependency>
53.1. Braintree 选项 复制链接链接已复制到粘贴板!
Braintree 组件支持 2 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| configuration (common) | 使用共享配置 | BraintreeConfiguration | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Braintree 端点使用 URI 语法配置:
braintree:apiName/methodName
braintree:apiName/methodName
使用以下路径和查询参数:
53.1.1. 路径名(2 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| apiName | 需要 什么操作才能执行 | BraintreeApiName | |
| methodName | 用于所选操作的子操作 | 字符串 |
53.1.2. 查询参数(14 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| environment (common) | 环境 Either SANDBOX 或 PRODUCTION | 字符串 | |
| inBody (common) | 设置在 Exchange In Body 中传递的参数名称 | 字符串 | |
| merchantId (common) | Braintree 提供的 merchant id。 | 字符串 | |
| privateKey (common) | Braintree 提供的私钥。 | 字符串 | |
| publicKey (common) | Braintree 提供的公钥。 | 字符串 | |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| accessToken (高级) | 争取另一人授予的访问令牌,以代表其处理事务。用于替代环境、merchant id、公钥和私钥字段。 | 字符串 | |
| httpReadTimeout (advanced) | 为 http 调用设置读取超时。 | 整数 | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| httpLogLevel (logging) | 为 http 调用设置日志记录级别,请参阅 java.util.logging.Level | 字符串 | |
| proxyHost (proxy) | 代理主机 | 字符串 | |
| proxyPort (proxy) | 代理端口 | 整数 |
53.2. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 14 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.braintree.configuration.access-token | 争取另一人授予的访问令牌,以代表其处理事务。用于替代环境、merchant id、公钥和私钥字段。 | 字符串 | |
| camel.component.braintree.configuration.api-name | 要执行的操作种类 | BraintreeApiName | |
| camel.component.braintree.configuration.environment | 环境 Either SANDBOX 或 PRODUCTION | 字符串 | |
| camel.component.braintree.configuration.http-log-level | 为 http 调用设置日志记录级别,请参阅 java.util.logging.Level | 级别 | |
| camel.component.braintree.configuration.http-log-name | 设置日志类别,以记录 http 调用,默认为 "Braintree" | 字符串 | |
| camel.component.braintree.configuration.http-read-timeout | 为 http 调用设置读取超时。 | 整数 | |
| camel.component.braintree.configuration.merchant-id | Braintree 提供的 merchant id。 | 字符串 | |
| camel.component.braintree.configuration.method-name | 用于所选操作的子操作 | 字符串 | |
| camel.component.braintree.configuration.private-key | Braintree 提供的私钥。 | 字符串 | |
| camel.component.braintree.configuration.proxy-host | 代理主机 | 字符串 | |
| camel.component.braintree.configuration.proxy-port | 代理端口 | 整数 | |
| camel.component.braintree.configuration.public-key | Braintree 提供的公钥。 | 字符串 | |
| camel.component.braintree.enabled | 启用 braintree 组件 | true | 布尔值 |
| camel.component.braintree.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
53.3. URI 格式 复制链接链接已复制到粘贴板!
braintree://endpoint-prefix/endpoint?[options]
braintree://endpoint-prefix/endpoint?[options]
端点前缀可以是以下之一:
- addOn
- address
- clientToken
- creditCardverification
- customer
- 折扣
- dispute
- documentUpload
- merchantAccount
- paymentmethod
- paymentmethodNonce
- plan
- 报告
- settlementBatchSummary
- subscription
- transaction
- webhookNotification
53.4. BraintreeComponent 复制链接链接已复制到粘贴板!
Braintree 组件可使用以下选项进行配置。可以使用组件的 bean 属性 配置 org.apache.camel.component.braintree.BraintreeConfiguration 来提供这些选项。
| 选项 | 类型 | 描述 |
|---|---|---|
| 环境 | 字符串 | 指定请求应定向到 - sandbox 或 production 的位置 |
| merchantId | 字符串 | 网关帐户的唯一标识符,与merchant 帐户 ID 不同 |
| publicKey | 字符串 | 用户特定的公共标识符 |
| privateKey | 字符串 | 用户特定的安全标识符不应共享 - 即使与我们共享! |
| accessToken | 字符串 | 使用 Braintree Auth 授予令牌,以便它们能够代表处理事务。用于代替环境、merchantId、publicKey 和 privateKey 选项。 |
以上所有选项都由 Braintree 支付提供
53.5. 制作者端点: 复制链接链接已复制到粘贴板!
制作者端点可以使用端点前缀,后跟下描述的端点名称和关联选项。简写别名可用于某些端点。端点 URI MUST 包含一个前缀。
不是必需的端点选项由 [] 表示。如果端点没有强制选项,则会提供一组 [] 选项 MUST。制作者端点也可以使用特殊选项 inBody ,它应当包含该端点选项的名称,其值将包含在 Camel Exchange In 消息中。
端点 URI 中都可以提供任何端点选项,或者在消息标头中动态提供。消息标头名称必须是 CamelBraintree.<option> 的格式。请注意, inBody 选项会覆盖消息标头,例如, Body=option 中的 endpoint 选项会覆盖 CamelBraintree.option 标头。
有关端点和选项的更多信息,请参阅 https://developers.braintreepayments.com/reference/overview的 Braintree 参考。
53.5.1. 端点前缀 addOn 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 addOn 来调用,如下所示:
braintree://addOn/endpoint
braintree://addOn/endpoint
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| all |
|
| List<com.braintreegateway.Addon> |
53.5.2. 端点前缀 地址 复制链接链接已复制到粘贴板!
可以通过前缀 地址 调用以下端点,如下所示:
braintree://address/endpoint?[options]
braintree://address/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| create |
| customerId, request | com.braintreegateway.Result<com.braintreegateway.Address> |
| delete |
| customerId, id | com.braintreegateway.Result<com.braintreegateway.Address> |
| find |
| customerId, id | com.braintreegateway.Address |
| update |
| customerId, id, request | com.braintreegateway.Result<com.braintreegateway.Address> |
地址的 URI 选项
| 名称 | 类型 |
|---|---|
| customerId | 字符串 |
| Request (请求) | com.braintreegateway.AddressRequest |
| id | 字符串 |
53.5.3. 端点前缀 clientToken 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 clientToken 调用,如下所示:
braintree://clientToken/endpoint?[options]
braintree://clientToken/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| generate |
| Request (请求) | 字符串 |
clientToken的 URI 选项
| 名称 | 类型 |
|---|---|
| Request (请求) | com.braintreegateway.ClientTokenrequest |
53.5.4. 端点前缀 creditCardVerification 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 creditCardverification 调用,如下所示:
braintree://creditCardVerification/endpoint?[options]
braintree://creditCardVerification/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| find |
| id | com.braintreegateway.CreditCardVerification |
| search |
| query | com.braintreegateway.ResourceCollection<com.braintreegateway.CreditCardVerification> |
贡献度的 URI 选项
| 名称 | 类型 |
|---|---|
| id | 字符串 |
| query | com.braintreegateway.CreditCardVerificationSearchRequest |
53.5.5. 端点前缀 客户 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 客户 调用,如下所示:
braintree://customer/endpoint?[options]
braintree://customer/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| all |
|
|
|
| create |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.Customer> |
| delete |
| id | com.braintreegateway.Result<com.braintreegateway.Customer> |
| find |
| id | com.braintreegateway.Customer |
| search |
| query | com.braintreegateway.ResourceCollection<com.braintreegateway.Customer> |
| update |
| id, request | com.braintreegateway.Result<com.braintreegateway.Customer> |
客户的URI 选项
| 名称 | 类型 |
|---|---|
| id | 字符串 |
| Request (请求) | com.braintreegateway.CustomerRequest |
| query | com.braintreegateway.CustomerSearchRequest |
53.5.6. 端点前缀 折扣 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 折扣 调用,如下所示:
braintree://discount/endpoint
braintree://discount/endpoint
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| all |
|
| List<com.braintreegateway.Discount> |
+
+
+
+
53.5.7. 端点前缀 dispute 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 dispute 调用 , 如下所示:
braintree://dispute/endpoint?[options]
braintree://dispute/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| accept |
| id | com.braintreegateway.Result |
| addFileEvidence |
| disputeId, documentId | com.braintreegateway.Result<DisputeEvidence> |
| addFileEvidence |
| disputeId, fileEvidenceRequest | com.braintreegateway.Result<DisputeEvidence> |
| addTextEvidence |
| disputeId, content | com.braintreegateway.Result<DisputeEvidence> |
| addTextEvidence |
| disputeId, textEvidenceRequest | com.braintreegateway.Result<DisputeEvidence> |
| 完成 |
| id | com.braintreegateway.Result |
| find |
| id | com.braintreegateway.Dispute |
| removeEvidence |
| id | com.braintreegateway.Result |
| search |
| disputeSearchRequest | com.braintreegateway.PaginatedCollection<com.braintreegateway.Dispute> |
用于 争议的 URI 选项
| 名称 | 类型 |
|---|---|
| id | 字符串 |
| disputeId | 字符串 |
| documentId | 字符串 |
| fileEvidenceRequest | com.braintreegateway.FileEvidenceRequest |
| content | 字符串 |
| textEvidenceRequest | |
| com.braintreegateway.TextEvidenceRequest | disputeSearchRequest |
53.5.8. 端点前缀 documentUpload 复制链接链接已复制到粘贴板!
以下端点可使用前缀 documentUpload 调用,如下所示:
braintree://documentUpload/endpoint?[options]
braintree://documentUpload/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| create |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.DocumentUpload> |
documentUpload的 URI Options
| 名称 | 类型 |
|---|---|
| Request (请求) | com.braintreegateway.DocumentUploadRequest |
53.5.9. 端点前缀 merchantAccount 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 merchantAccount 调用,如下所示:
braintree://merchantAccount/endpoint?[options]
braintree://merchantAccount/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| create |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.MerchantAccount> |
| createForCurrency | currencyRequest | com.braintreegateway.Result<com.braintreegateway.MerchantAccount> | |
| find |
| id | com.braintreegateway.MerchantAccount |
| update |
| id, request | com.braintreegateway.Result<com.braintreegateway.MerchantAccount> |
merchantAccount的 URI 选项
| 名称 | 类型 |
|---|---|
| id | 字符串 |
| Request (请求) | com.braintreegateway.MerchantAccountRequest |
| currencyRequest | com.braintreegateway.MerchantAccountCreateForCurrencyRequest |
53.5.10. 端点前缀 paymentMethod 复制链接链接已复制到粘贴板!
以下端点可以使用前缀 payment Method 调用 ,如下所示:
braintree://paymentMethod/endpoint?[options]
braintree://paymentMethod/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| create |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.PaymentMethod> |
| delete |
| 令牌, deleteRequest | com.braintreegateway.Result<com.braintreegateway.PaymentMethod> |
| find |
| token | com.braintreegateway.PaymentMethod |
| update |
| 令牌, 请求 | com.braintreegateway.Result<com.braintreegateway.PaymentMethod> |
支付Method的 URI 选项
| 名称 | 类型 |
|---|---|
| token | 字符串 |
| Request (请求) | com.braintreegateway.PaymentMethodRequest |
| deleteRequest | com.braintreegateway.PaymentMethodDeleteRequest |
53.5.11. 端点前缀 paymentMethodNonce 复制链接链接已复制到粘贴板!
以下端点可以使用前缀 paymentMethodNonce 调用,如下所示:
braintree://paymentMethodNonce/endpoint?[options]
braintree://paymentMethodNonce/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| create |
| paymentMethodToken | com.braintreegateway.Result<com.braintreegateway.PaymentMethodNonce> |
| find |
| paymentMethodNonce | com.braintreegateway.PaymentMethodNonce |
支付MethodNonce的 URI 选项
| 名称 | 类型 |
|---|---|
| paymentMethodToken | 字符串 |
| paymentMethodNonce | 字符串 |
53.5.12. 端点前缀 计划 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 计划 调用,如下所示:
braintree://plan/endpoint
braintree://plan/endpoint
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| all |
|
| List<com.braintreegateway.Plan> |
53.5.13. 端点前缀 报告 复制链接链接已复制到粘贴板!
以下端点可使用前缀 报告 调用,如下所示:
braintree://plan/report?[options]
braintree://plan/report?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| transactionLevelFees |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.TransactionLevelFeeReport> |
报告的 URI Options
| 名称 | 类型 |
|---|---|
| Request (请求) | com.braintreegateway.TransactionLevelFeeReportRequest |
53.5.14. 端点前缀 settlementBatchSummary 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 settlement BatchBatchBatchmary 调用,如下所示:
braintree://settlementBatchSummary/endpoint?[options]
braintree://settlementBatchSummary/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| generate |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.SettlementBatchSummary> |
settlement BatchSummary 的URI 选项
| 名称 | 类型 |
|---|---|
| settlementDate | 日历 |
| groupByCustomField | 字符串 |
53.5.15. 端点前缀 订阅 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 订阅 调用,如下所示:
braintree://subscription/endpoint?[options]
braintree://subscription/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| 取消 |
| id | com.braintreegateway.Result<com.braintreegateway.Subscription> |
| create |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.Subscription> |
| delete |
| customerId, id | com.braintreegateway.Result<com.braintreegateway.Subscription> |
| find |
| id | com.braintreegateway.Subscription |
| retryCharge |
| subscriptionId, number | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| search |
| searchRequest | com.braintreegateway.ResourceCollection<com.braintreegateway.Subscription> |
| update |
| id, request | com.braintreegateway.Result<com.braintreegateway.Subscription> |
订阅的URI 选项
| 名称 | 类型 |
|---|---|
| id | 字符串 |
| Request (请求) | com.braintreegateway.SubscriptionRequest |
| customerId | 字符串 |
| subscriptionId | 字符串 |
| amount | BigDecimal |
| searchRequest | com.braintreegateway.SubscriptionSearchRequest. |
53.5.16. 端点前缀 事务 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 事务 调用,如下所示:
braintree://transaction/endpoint?[options]
braintree://transaction/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| cancelRelease |
| id | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| cloneTransaction |
| id, cloneRequest | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| 贡献度 |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| find |
| id | com.braintreegateway.Transaction |
| holdInEscrow |
| id | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| releaseFromEscrow |
| id | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| 退款(ref) |
| id、amount、refRequest | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| sale |
| Request (请求) | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| search |
| query | com.braintreegateway.ResourceCollection<com.braintreegateway.Transaction> |
| submitForPartialSettlement |
| ID、数量 | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| submitForSettlement |
| ID、数量、请求 | com.braintreegateway.Result<com.braintreegateway.Transaction> |
| voidTransaction |
| id | com.braintreegateway.Result<com.braintreegateway.Transaction> |
事务的 URI 选项
| 名称 | 类型 |
|---|---|
| id | 字符串 |
| Request (请求) | com.braintreegateway.TransactionCloneRequest |
| cloneRequest | com.braintreegateway.TransactionCloneRequest |
| refundRequest | com.braintreegateway.TransactionRefundRequest |
| amount | BigDecimal |
| query | com.braintreegateway.TransactionSearchRequest |
53.5.17. 端点前缀 WebhookNotification 复制链接链接已复制到粘贴板!
以下端点可以通过前缀 webhookNotification 来调用,如下所示:
braintree://webhookNotification/endpoint?[options]
braintree://webhookNotification/endpoint?[options]
| 端点 | 简写别名 | 选项 | 结果 Body 类型 |
|---|---|---|---|
| parse |
| 签名, 有效负载 | com.braintreegateway.WebhookNotification |
| 验证 |
| 挑战 | 字符串 |
WebhookNotification的 URI 选项
| 名称 | 类型 |
|---|---|
| 签名 | 字符串 |
| 有效负载 | 字符串 |
| 挑战 | 字符串 |
53.6. 消费者端点 复制链接链接已复制到粘贴板!
任何制作者端点都可用作消费者端点。消费者端点可以使用 Scheduled Poll Consumer Options 和 consumer. 前缀来调度端点调用。默认情况下,返回数组或集合的 Consumer 端点将为每个元素生成一个交换,并且每个交换将执行一次其路由。要更改此行为,请使用属性 consumer.splitResults=true 为整个列表或数组返回单个交换。
53.7. 消息标头 复制链接链接已复制到粘贴板!
任何 URI 选项都可以在具有 CamelBraintree. 前缀的生产端点的消息标头中提供。
53.8. 邮件正文 复制链接链接已复制到粘贴板!
所有结果消息正文都使用 Braintree Java SDK 提供的对象。producer 端点可以在 inBody endpoint 参数中为传入消息正文指定选项名称。
53.9. 例子 复制链接链接已复制到粘贴板!
蓝图(Blueprint)
53.10. 另请参阅 复制链接链接已复制到粘贴板!
* 配置 Camel * 组件 * Endpoint * Getting Started
第 54 章 浏览组件 复制链接链接已复制到粘贴板!
作为 Camel 版本 1.3 提供
Browse 组件提供了一个简单的 BrowsableEndpoint,可用于测试、可视化工具或调试。发送到端点的交换都可用于浏览。
54.1. URI 格式 复制链接链接已复制到粘贴板!
browse:someName[?options]
browse:someName[?options]
其中 someName 可以是唯一标识端点的任意字符串。
54.2. 选项 复制链接链接已复制到粘贴板!
Browse 组件没有选项。
Browse 端点使用 URI 语法进行配置:
browse:name
browse:name
使用以下路径和查询参数:
54.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| name | 必需 A 名称,可以是任何可唯一标识端点的字符串 | 字符串 |
54.2.2. 查询参数(4 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN/ERROR 级别并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN/ERROR 级别记录并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在创建交换时设置默认交换模式。 | ExchangePattern | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
54.3. 示例 复制链接链接已复制到粘贴板!
在下面的路由中,我们插入一个 浏览: 组件可以浏览要通过的交换:
from("activemq:order.in").to("browse:orderReceived").to("bean:processOrder");
from("activemq:order.in").to("browse:orderReceived").to("bean:processOrder");
现在,我们可以检查 Java 代码内接收的交换:
54.4. 另请参阅 复制链接链接已复制到粘贴板!
- 配置 Camel
- 组件
- 端点
- 开始使用
第 55 章 EHCache 组件(已弃用) 复制链接链接已复制到粘贴板!
作为 Camel 版本 2.1 提供
缓存 组件允许您将 EHCache 用作缓存实施来执行缓存操作。缓存本身是按需创建的,或者该名称的缓存已经存在,那么只需使用其原始设置即可使用它。
此组件支持基于制作者和事件的消费者端点。
缓存使用者是基于事件的消费者,可用于侦听和响应特定的缓存活动。如果您需要从预先存在的缓存执行选择,请使用为缓存组件定义的处理器。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
55.1. URI 格式 复制链接链接已复制到粘贴板!
cache://cacheName[?options]
cache://cacheName[?options]
您可以以以下格式在 URI 中附加查询选项 ?option =value&option=#beanRef&…
55.2. 选项 复制链接链接已复制到粘贴板!
EHCache 组件支持 4 个选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| cacheManagerFactory (advanced) | 使用给定的 CacheManagerFactory 创建 CacheManager。默认情况下,使用 DefaultCacheManagerFactory。 | CacheManagerFactory | |
| configuration (common) | 设置缓存配置 | CacheConfiguration | |
| configurationFile (common) | 设置 ehcache.xml 文件的位置,以便从 classpath 或文件系统加载。默认情况下,该文件从 classpath:ehcache.xml 加载 | classpath:ehcache.xml | 字符串 |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
EHCache 端点使用 URI 语法进行配置:
cache:cacheName
cache:cacheName
使用以下路径和查询参数:
55.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| cacheName | 缓存 所需的 名称 | 字符串 |
55.2.2. 查询参数(19 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| diskExpiryThreadInterval Seconds (common) | 运行磁盘到期线程之间的秒数。 | long | |
| diskPersistent (common) | 磁盘存储是否会在应用程序重启之间保留。 | false | 布尔值 |
| diskStorePath (common) | 弃用的 此参数将被忽略。CacheManager 使用 setter 注入来设置它。 | 字符串 | |
| eternal (common) | 设定元素是否声音。如果发往,则忽略超时,且元素永远不会过期。 | false | 布尔值 |
| key (common) | 要使用的默认密钥。如果在消息标头中提供了密钥,则标头中的密钥优先使用。 | 字符串 | |
| maxElementsInMemory (common) | 在内存中保存的元素数量。 | 1000 | int |
| memoryStoreEvictionPolicy (common) | 达到内存中最多元素数时要使用的驱除策略。策略会定义要删除的元素。LRU - Lest Recently Used LFU - Lest Frently Used FIFO - First In First Out | LFU | MemoryStoreEviction Policy |
| objectCache (common) | 是否打开允许将非序列化对象存储在缓存中。如果这个选项被启用,则无法对磁盘启用溢出。 | false | 布尔值 |
| operation (common) | 要使用的默认缓存操作。如果消息标头中的操作,则来自标头的操作将优先使用。 | 字符串 | |
| overflowToDisk (common) | 指定缓存是否为磁盘溢出 | true | 布尔值 |
| timeToIdleSeconds (common) | 元素到期前访问之间的最大时间 | 300 | long |
| timeToLiveSeconds (common) | 创建时间和何时元素之间的最长时间。仅当元素不是框架时,才会使用 | 300 | long |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| cacheLoaderRegistry (advanced) | 使用 CacheLoaderRegistry 配置缓存加载程序 | CacheLoaderRegistry | |
| cacheManagerFactory (advanced) | 要使用自定义 CacheManagerFactory 来创建该端点要使用的 CacheManager。默认情况下,会使用组件上配置的 CacheManagerFactory。 | CacheManagerFactory | |
| eventListenerRegistry (advanced) | 使用 CacheEventListenerRegistry 配置事件监听程序 | CacheEventListener Registry | |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
55.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 17 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| camel.component.cache.cache-manager-factory | 使用给定的 CacheManagerFactory 创建 CacheManager。默认情况下,使用 DefaultCacheManagerFactory。选项是一个 org.apache.camel.component.cache.CacheManagerFactory 类型。 | 字符串 | |
| camel.component.cache.configuration-file | 设置 ehcache.xml 文件的位置,以便从 classpath 或文件系统加载。默认情况下,该文件从 classpath:ehcache.xml 加载 | classpath:ehcache.xml | 字符串 |
| camel.component.cache.configuration.cache-loader-registry | 使用 CacheLoaderRegistry 配置缓存加载程序 | CacheLoaderRegistry | |
| camel.component.cache.configuration.cache-name | 缓存的名称 | 字符串 | |
| camel.component.cache.configuration.disk-expiry-thread-interval-seconds | 运行磁盘到期线程之间的秒数。 | Long | |
| camel.component.cache.configuration.disk-persistent | 磁盘存储是否会在应用程序重启之间保留。 | false | 布尔值 |
| camel.component.cache.configuration.eternal | 设定元素是否声音。如果发往,则忽略超时,且元素永远不会过期。 | false | 布尔值 |
| camel.component.cache.configuration.event-listener-registry | 使用 CacheEventListenerRegistry 配置事件监听程序 | CacheEventListener Registry | |
| camel.component.cache.configuration.max-elements-in-memory | 在内存中保存的元素数量。 | 1000 | 整数 |
| camel.component.cache.configuration.memory-store-eviction-policy | 达到内存中最多元素数时要使用的驱除策略。策略会定义要删除的元素。LRU - Lest Recently Used LFU - Lest Frently Used FIFO - First In First Out | MemoryStoreEviction Policy | |
| camel.component.cache.configuration.object-cache | 是否打开允许将非序列化对象存储在缓存中。如果这个选项被启用,则无法对磁盘启用溢出。 | false | 布尔值 |
| camel.component.cache.configuration.overflow-to-disk | 指定缓存是否为磁盘溢出 | true | 布尔值 |
| camel.component.cache.configuration.time-to-idle-seconds | 元素到期前访问之间的最大时间 | 300 | Long |
| camel.component.cache.configuration.time-to-live-seconds | 创建时间和何时元素之间的最长时间。仅当元素不是框架时,才会使用 | 300 | Long |
| camel.component.cache.enabled | 启用缓存组件 | true | 布尔值 |
| camel.component.cache.resolve-property-placeholders | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
| camel.component.cache.configuration.disk-store-path | 此参数将被忽略。CacheManager 使用 setter 注入来设置它。 | 字符串 |
55.4. 从缓存发送/查看消息 复制链接链接已复制到粘贴板!
55.4.1. Message Headers 最多为 Camel 2.7 复制链接链接已复制到粘贴板!
| 标头 | 描述 |
|---|---|
|
| 要在缓存上执行的操作。有效选项包括
* GET * CHECK * ADD * UPDATE * DELETE * DELETEALL |
|
| 用于将消息存储在缓存中的缓存密钥。如果 CACHE_OPERATION 是 DELETEALL,则缓存键是可选的 |
55.4.2. 消息标头 Camel 2.8+ 复制链接链接已复制到粘贴板!
Camel 2.8 中的标头更改
标头名称和支持的值已更改为带有 'CamelCache' 的前缀,并使用混合的大小写。这样可以更轻松地识别和保持与其他标头分开。CacheConstants 变量名称保持不变,只有它们的值已更改。另外,这些标头现在在执行缓存操作后从交换中删除。
| 标头 | 描述 |
|---|---|
|
| 要在缓存上执行的操作。有效选项有 * CamelCacheGet * CamelCacheCheck * CamelCacheAdd * CamelCacheUpdate * CamelCacheDelete * CamelCacheDeleteAll |
|
| 用于将消息存储在缓存中的缓存密钥。如果 CamelCacheOperation 为 CamelCacheDeleteAll,则缓存键是可选的 |
CamelCacheAdd 和 CamelCacheUpdate 操作支持额外的标头:
| 标头 | 类型 | 描述 |
|---|---|---|
|
|
| Camel 2.11: 生存时间(以秒为单位)。 |
|
|
| Camel 2.11: 空闲时间(以秒为单位)。 |
|
|
| Camel 2.11: 内容是否合理。 |
55.4.3. cache Producer 复制链接链接已复制到粘贴板!
将数据发送到缓存时,需要能够直接将交换的有效负载存储在预先存在的或创建on-按需缓存中。这样做的好处包括
- 设置上述显示的消息交换标头。
- 确保 Message Exchange Body 包含定向到缓存的消息
55.4.4. 缓存消费者 复制链接链接已复制到粘贴板!
从缓存接收数据涉及使用事件 Listener 侦听预先存在的或创建按需缓存的功能,并在任何缓存活动发生时接收自动通知(例如 CamelCacheGet/CamelCacheUpdate/CamelCacheDelete/CamelCacheDelete/CamelCacheDelete/CamelCacheDelete/CamelCacheDeleteAll)。在这样的活动中
- 包含消息交换标头和消息交换正文(包含刚刚添加/更新有效负载)的交换会被放入并发送。
- 如果是 CamelCacheDeleteAll 操作,则不会填充消息交换标头 CamelCacheKey 和 Message Exchange Body。
55.4.5. 缓存处理器 复制链接链接已复制到粘贴板!
有一组 nice 处理器,能够执行缓存查找并有选择地替换有效负载内容。
- 正文(body)
- token
- XPath 级别
55.5. 缓存使用示例 复制链接链接已复制到粘贴板!
55.5.1. 示例 1:配置缓存 复制链接链接已复制到粘贴板!
55.5.2. 示例 2:向缓存添加密钥 复制链接链接已复制到粘贴板!
55.5.3. 示例 2:更新缓存中的现有密钥 复制链接链接已复制到粘贴板!
55.5.4. 示例 3:删除缓存中的现有密钥 复制链接链接已复制到粘贴板!
55.5.5. 示例 4:删除缓存中的所有现有密钥 复制链接链接已复制到粘贴板!
55.5.6. 示例 5:请注意在缓存中注册了处理器和其他 Producers 的任何更改 复制链接链接已复制到粘贴板!
55.5.7. 示例 6:使用 Processors 有选择地将有效负载替换为缓存值 复制链接链接已复制到粘贴板!
55.5.8. 示例 7:从缓存中获取条目 复制链接链接已复制到粘贴板!
55.5.9. 示例 8:检查缓存中的条目 复制链接链接已复制到粘贴板!
注意:CHECK 命令会测试缓存中存在条目,但不会在正文中放置消息。
55.6. 管理 EHCache 复制链接链接已复制到粘贴板!
EHCache 拥有自己的来自 JMX 的统计数据和管理。
以下是如何在 Spring 应用程序上下文中通过 JMX 来公开它们的片段:
当然,您可以在直接 Java 中进行相同的操作:
ManagementService.registerMBeans(CacheManager.getInstance(), mbeanServer, true, true, true, true);
ManagementService.registerMBeans(CacheManager.getInstance(), mbeanServer, true, true, true, true);
您可以通过这种方式获得缓存命中、未命中的缓存命中率、磁盘点击、磁盘点数、大小统计。您还可以实时更改 CacheConfiguration 参数。
55.7. 缓存复制 Camel 2.8 复制链接链接已复制到粘贴板!
Camel 缓存组件可以使用多种不同的复制机制在服务器节点之间分发缓存,包括:RMI、JGroups、JMS 和缓存服务器。
使其工作有两种不同的方法:
1.您可以手动配置 ehcache.xml
或者
2.您可以配置以下三个选项:
- cacheManagerFactory
- eventListenerRegistry
- cacheLoaderRegistry
使用第一个选项配置 Camel 缓存复制是一些硬工作,因为您必须单独配置所有缓存。因此,当所有缓存名称未知时,使用 ehcache.xml 不是一个好主意。
当希望使用多个不同的缓存时,第二个选项会更好,因为您不需要为每个缓存定义选项。这是因为,每个 CacheManager 和每个 CacheEndpoint 设置复制选项。另外,这也是在开发阶段不能知道缓存名称的唯一方法。
注意 :阅读 EHCache 手动 以更好地了解 Camel 缓存复制机制可能会很有用。
55.7.1. 示例: JMS 缓存复制 复制链接链接已复制到粘贴板!
JMS 复制是最强大且安全的复制方法。与 Camel 缓存复制一同使用使得它变得更加简单。一个示例 位于单独的页面 中。
第 56 章 Caffeine Cache 组件 复制链接链接已复制到粘贴板!
可作为 Camel 版本 2.20 可用
caffeine-cache 组件可让您使用 Caffeine 的简单缓存来执行缓存操作。
Maven 用户需要将以下依赖项添加到其 pom.xml 中:
56.1. URI 格式 复制链接链接已复制到粘贴板!
caffeine-cache://cacheName[?options]
caffeine-cache://cacheName[?options]
您可以以以下格式在 URI 中附加查询选项 ?option =value&option=#beanRef&…
56.2. 选项 复制链接链接已复制到粘贴板!
Caffeine Cache 组件支持 2 选项,它们如下所列。
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| 配置 (高级) | 设置全局组件配置 | CaffeineConfiguration | |
| resolveProperty Placeholders (advanced) | 启动时,组件是否应自行解析属性占位符。只有 String 类型的属性才能使用属性占位符。 | true | 布尔值 |
Caffeine Cache 端点使用 URI 语法配置:
caffeine-cache:cacheName
caffeine-cache:cacheName
使用以下路径和查询参数:
56.2.1. 路径名(1 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| cacheName | 所需的 缓存名称 | 字符串 |
56.2.2. 查询参数(19 参数): 复制链接链接已复制到粘贴板!
| 名称 | 描述 | 默认 | 类型 |
|---|---|---|---|
| createCacheIfNotExist (common) | 配置如果缓存存在或者未预先配置,则需要创建缓存。 | true | 布尔值 |
| bridgeErrorHandler (consumer) | 允许将消费者桥接到 Camel 路由 Error Handler,这意味着使用者试图获取传入消息或类似信息时出现任何异常,现在将作为一个消息进行处理,并由路由 Error Handler 处理。默认情况下,使用者将使用 org.apache.camel.spi.Exception 处理程序处理异常,该处理程序将记录在 WARN 或 ERROR 级别,并忽略。 | false | 布尔值 |
| exceptionHandler (consumer) | 要让使用者使用自定义 ExceptionHandler。请注意,如果启用了选项 bridgeErrorHandler,则不使用这个选项。默认情况下,消费者处理异常,这将在 WARN 或 ERROR 级别记录,并忽略。 | ExceptionHandler | |
| exchangePattern (consumer) | 在使用者创建交换时设置交换模式。 | ExchangePattern | |
| action (producer) | 配置默认缓存操作。如果在消息标头中设置了操作,则来自标头的操作将优先使用。 | 字符串 | |
| cache (producer) | 配置一个已经使用实例化的缓存 | Cache | |
| cacheLoader (producer) | 在 LoadCache 使用时配置 CacheLoader | CacheLoader | |
| evictionType (producer) | 为此缓存设置驱除类型 | SIZE_BASED | EvictionType |
| expireAfterAccessTime (producer) | 在基于时间的驱除(以秒为单位)时,设置访问时间过期(以秒为单位) | 300 | int |
| expireAfterWriteTime (producer) | 在基于时间的驱除(以秒为单位)设置访问后写入过期(以秒为单位) | 300 | int |
| initialCapacity (producer) | 为缓存设置初始容量 | 10000 | int |
| key (producer) | 配置默认操作密钥。如果在消息标头中设置了密钥,则标头中的密钥优先使用。 | 对象 | |
| maximumSize (producer) | 为缓存设置最大大小 | 10000 | int |
| removalListener (producer) | 为缓存设置特定的删除 Listener | RemovalListener | |
| statsCounter (producer) | 为缓存统计设置特定的 Stats Counter | StatsCounter | |
| statsEnabled (producer) | 在缓存中启用 stats | false | 布尔值 |
| keyType (advanced) | 缓存密钥类型,默认为 java.lang.Object | java.lang.Object | 字符串 |
| 同步 (高级) | 设置同步处理是否应当严格使用,还是允许 Camel 使用异步处理(如果受支持)。 | false | 布尔值 |
| valueType (advanced) | 缓存值类型,默认为 java.lang.Object | java.lang.Object | 字符串 |
56.3. Spring Boot Auto-Configuration 复制链接链接已复制到粘贴板!
组件支持 17 个选项,如下所示。
| 名称 | 描述 | 默认 | 类型 |
|---|