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. Usage リンクのコピーリンクがクリップボードにコピーされました!
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 ルートの beans キーで参照するすべての型に適用されます。
@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 {
}