Javaの現場でCamel使うチャンスがあったので、キャメルについてまとめます!
Apache Camel(アパッチ・キャメル)とは
Apache Camel は Java を中心とした統合フレームワークです。
複数のシステムを「ルーティング」という考え方でつなぎます。
1. Camelでできること
- REST API 連携
- ファイル連携
- バッチ処理
- メッセージング(JMS / Kafka)
- データ形式変換(JSON / XML)
👉 「データの流れ」を定義するフレームワーク
2. Route(ルート)
Route は処理の流れそのものです。
例(イメージ):
from("direct:start")
→ 処理
→ レスポンス作成
3. Endpoint(エンドポイント)
データの入口・出口。
例:
- rest:get:/health
- file:/tmp/input
- jms:queue:test
4. Exchange と Message
- Exchange:1リクエスト分の箱
- Message:中身
Message の中身:
- Body(本文)
- Header(制御情報)
※ Camel 3 では Message は1つのみ
5. Body / Header / Property の違い
| 種類 | 役割 |
|---|---|
| Body | レスポンス本文 |
| Header | HTTP情報・条件分岐 |
| Property | ルート内の一時データ |
6. REST API の考え方
- rest:URL定義
- route:処理定義
- Body に入れたものがレスポンス
例(イメージ):
/api/health
→ SUCCESS を返す
7. XML / JSON レスポンス
- JSON:Jacksonで自動変換
- XML:JAXB / Jackson XML
- XSD(Schema)は 必須ではない
- バリデーションしたい場合のみ使用
8. エラーハンドリング
考え方:
例外発生
→ handled(true)
→ エラーレスポンス作成
9. 向いているケース
- 複数システム連携
- API + バッチ混在
- 仕様変更が多い現場
10. まとめ
Apache Camel は
「処理を書く」のではなく
「処理の流れを書く」フレームワーク