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 {
}
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.