2.83. YAML DSL
用于解析 YAML 路由定义的 YAML 堆栈
2.83.1. 内部是什么
有关使用和配置详情,请参阅上述链接。
2.83.2. Maven 协调
在 code.quarkus.redhat.com 上使用此扩展创建一个新项目
或者将协调添加到现有项目中:
<dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-yaml-dsl</artifactId> </dependency>
2.83.3. 使用方法
2.83.3.1. 原生模式
在 Camel YAML DSL 标记中定义时,需要您注册类以进行反映。详情请参考 原生模式 指南。
2.83.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.83.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 { }