270.7. Camel データをリアクティブフレームワークに処理する


リアクティブストリーム パブリッシャー は一方向のデータエクスチェンジを可能にしますが、Camel ルートはインアウトエクスチェンジパターンを使用することがよくあります (たとえば、REST エンドポイントを定義し、一般に、各リクエストに対してレスポンスが必要な場合)。

このような状況では、ユーザーはリアクティブ処理ステップをフローに追加して、Camel ルートを強化したり、リアクティブフレームワークを使用して変換全体を定義したりできます。

たとえば、次のルートがあるとします。

Copy to Clipboard Toggle word wrap
from("timer:clock")
.setBody().header(Exchange.TIMER_COUNTER)
.to("direct:reactive")
.log("Continue with Camel route... n=${body}");

リアクティブ処理ステップは、direct:reactive エンドポイントに関連付けることができます。

Copy to Clipboard Toggle word wrap
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);

camel.process("direct:reactive", Integer.class, items ->
    Flowable.fromPublisher(items) // RxJava2
        .map(n -> -n)); // make every number negative

Camel ルートを流れるデータは、外部のリアクティブフレームワークによって処理され、Camel 内で処理フローが続行されます。

このメカニズムは、完全にリアクティブな方法で In-Out エクスチェンジを定義するためにも使用できます。

Copy to Clipboard Toggle word wrap
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);

// requires a rest-capable Camel component
camel.process("rest:get:orders", exchange ->
                    Flowable.fromPublisher(exchange)
                            .flatMap(ex -> allOrders())); // retrieve orders asynchronously

詳細については、Camel の例 (camel-example-reactive-streams) を参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.