2.125. YAML DSL
用于解析 YAML 路由定义的 YAML 堆栈
2.125.1. 什么是内部 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
有关用法和配置详情,请参阅上述链接。
2.125.2. Maven 协调 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在 code.quarkus.redhat.com 上使用此扩展创建新项目
或者将协调添加到现有项目中:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-yaml-dsl</artifactId>
</dependency>
2.125.3. 使用方法 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
2.125.3.1. 原生模式 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在 Camel YAML DSL 标记中定义的以下结构需要您注册类以进行反映。有关详细信息,请参阅原生模式 指南。
2.125.3.1.1. Bean 定义 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
YAML DSL 提供了定义 Bean 的功能,如下所示:
- beans:
- name: "greetingBean"
type: "org.acme.GreetingBean"
properties:
greeting: "Hello World!"
- route:
id: "my-yaml-route"
from:
uri: "timer:from-yaml?period=1000"
steps:
- to: "bean:greetingBean"
在本例中,需要注册 GreetingBean 类以进行反映。这适用于您在 YAML 路由中的 Bean 键下引用的任何类型。
@RegisterForReflection
public class GreetingBean {
}
2.125.3.1.2. 异常处理 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Camel 提供了各种处理异常方法。其中一些要求注册了 DSL 定义中引用的异常类。
on-exception
- on-exception:
handled:
constant: "true"
exception:
- "org.acme.MyHandledException"
steps:
- transform:
constant: "Sorry something went wrong"
@RegisterForReflection
public class MyHandledException {
}
throw-exception
- route:
id: "my-yaml-route"
from:
uri: "direct:start"
steps:
- choice:
when:
- simple: "${body} == 'bad value'"
steps:
- throw-exception:
exception-type: "org.acme.ForcedException"
message: "Forced exception"
otherwise:
steps:
- to: "log:end"
@RegisterForReflection
public class ForcedException {
}
do-catch
- route:
id: "my-yaml-route2"
from:
uri: "direct:tryCatch"
steps:
- do-try:
steps:
- to: "direct:readFile"
do-catch:
- exception:
- "java.io.FileNotFoundException"
steps:
- transform:
constant: "do-catch caught an exception"
@RegisterForReflection(targets = FileNotFoundException.class)
public class MyClass {
}