第3章 Red Hat build of Apache Camel for Spring Boot のスタートガイド
このガイドでは、Red Hat build of Apache Camel for Spring Boot を紹介し、Red Hat build of Apache Camel for Spring Boot を使用してアプリケーションの構築を開始する方法を示します。
3.1. Red Hat build of Apache Camel for Spring Boot のスターター リンクのコピーリンクがクリップボードにコピーされました!
Spring Boot の Camel サポートは、Camel の自動設定と多くの Camel コンポーネント のスターターを提供します。Camel コンテキストの独自の自動設定は、Spring コンテキストで使用可能な Camel ルートを自動検出し、主要な Camel ユーティリティー (producer テンプレート、コンシューマーテンプレート、型コンバーターなど) を Bean として登録します。
Maven アーキタイプを使用して Camel for Spring Boot アプリケーションを生成する方法は、Maven を使用した Spring Boot アプリケーション用の Camel 生成 を参照してください。
まず、Camel Spring Boot BOM を Maven pom.xml ファイルに追加する必要があります。
camel-spring-boot-bom は、Camel Spring Boot スターター JAR のリストを含む基本的な BOM です。
次に、Camel Spring Boot スターター を追加して Camel Context を起動します。
Spring Boot アプリケーションに必要な コンポーネントスターター も追加する必要があります。次の例は、自動設定スターター を MQTT5 コンポーネント に追加する方法を示しています。
3.1.1. Spring Boot 設定のサポート リンクのコピーリンクがクリップボードにコピーされました!
各 スターター には、標準の application.properties または application.yml ファイルで設定できる設定パラメーターがリストされています。これらのパラメーターの形式は camel.component.[component-name].[parameter] です。たとえば、MQTT5 ブローカーの URL を設定するには、次のように設定できます。
camel.component.paho-mqtt5.broker-url=tcp://localhost:61616
camel.component.paho-mqtt5.broker-url=tcp://localhost:61616
3.1.2. Camel ルートの追加 リンクのコピーリンクがクリップボードにコピーされました!
Camel ルート は Spring アプリケーションコンテキストで検出されます。たとえば、org.springframework.stereotype.Component でアノテーションが付けられたルートがロードされ、Camel コンテキストに追加されて実行されます。
3.1.3. ドメイン固有言語の使用 リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel は、以下に示すさまざまなドメイン固有言語 (DSL) でエンタープライズ統合パターンまたはルートを作成するために、Java ドメイン固有言語 (DSL) を使用します。
- Java DSL: Fluent Builder スタイルを使用する Java ベースの DSL。
- XML DSL: Camel XML ファイル限定の XML ベースの DSL。
- Yaml DSL: YAML 形式を使用してルートを作成するための DSL。
3.1.3.1. DSL の利点 リンクのコピーリンクがクリップボードにコピーされました!
汎用言語ではなく DSL を使用する利点は次のとおりです。
- 学習しやすく、作業も簡単になります。メインロジックがどこで始まり、どこで終わるか明確です。
- コードの安全性が向上します。Apache Camel の DSL には、すべてのステップを結合する強固なビルディングブロックがあります。
- エラーはドメイン固有です。障害が発生した場合、エラーの説明がより明確でわかりやすくなります。コードがシンプルになることで、エラーが発生しにくくなります。
- DSL はプラットフォームに依存しないように設計されています。コードが変更された場合、その影響は下位層に委譲されます。
3.1.3.2. 各種 DSL の比較 リンクのコピーリンクがクリップボードにコピーされました!
次のセクションでは、各種 DSL の違いと、各 DSL を使用するシナリオを説明します。
| Java DSL | XML DSL | YAML DSL | |
|---|---|---|---|
| 開発者ツール |
|
|
|
| Hawtio/Fuse コンソール | Hawtio は、ルートの作成にどの DSL が使用されたかに関係なく、ランタイムからルートを XML として取得し、そのルートを表示します。 | Hawtio は、ルートの作成にどの DSL が使用されたかに関係なく、ランタイムからルートを XML として取得し、そのルートを表示します。 | Hawtio は、ルートの作成にどの DSL が使用されたかに関係なく、ランタイムからルートを XML として取得し、そのルートを表示します。 |
| ソフトウェア開発モデル | DSL は、fluent builder API を採用しています。 |
| 最初から書くのは困難です。グラフィカルエディターを使用したモデリング開発アプローチが可能です。 |
| コードのデバッグ |
|
|
|
| 依存性注入 (DI) フレームワークとの統合 | あらゆる DI フレームワークとの統合が容易になります。 | XML DSL で DI フレームワークから既存の Bean を参照することは可能ですが、XML で新しい Bean を宣言すると、これらの Bean は Camel 専用になり、DI フレームワーク (Quarkus や Spring Boot など) の一部ではなくなります。 | YAML DSL で DI フレームワークから既存の Bean を参照することは可能ですが、YAML で新しい Bean を宣言すると、これらの Bean は Camel 専用になり、DI フレームワーク (Quarkus や Spring Boot など) の一部ではなくなります。 |
| チーム規模 | 柔軟性は高くなりますが、コードが読みにくくなります。長期間にわたってコードの作業とサポートを行う、同一の場所にある小規模なチームに適しています。 |
|
|
| チーム構造 | Camel 統合を開発するには、チームに Java 開発者が必要です。他のチームメンバーも、統合フローを読み取るために Java を理解できる必要があります。 |
|
|
| 開発者としての経験と好み |
| ルートを設計するためのグラフィカルなアプローチを提供しているため、新しいユーザーに最適です。 | ルートを設計するためのグラフィカルなアプローチを提供しているため、新しいユーザーに最適です。 |