257.5. Camel へのデータ送信
外部ライブラリーがイベントを Camel ルートにプッシュする必要がある場合は、Reactive Streams エンドポイントはコンシューマーとして設定する必要があります。
from("reactive-streams:elements")
.to("log:INFO");
要素 ストリームへのハンドルは、CamelReactiveStreams ユーティリティークラスから取得されます。
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);
Subscriber<String> elements = camel.streamSubscriber("elements", String.class);
サブスクライバーは、要素 ストリームから消費する Camel ルートにイベントをプッシュするために使用できます。
以下は、RxJava 2 で使用する方法の例です(ただし、リアクティブフレームワークを使用してイベントを公開することもできます)。
Flowable.interval(1, TimeUnit.SECONDS)
.map(i -> "Item " + i)
.subscribe(elements);
文字列項目は、この例では RxJava によって毎秒生成され、上記で定義した Camel ルートにプッシュされます。
257.5.1. direct API を使用した Camel へのデータ送信 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この場合、direct API を使用してエンドポイント URI から Camel サブスクライバーを取得できます。
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context);
// Send two strings to the "seda:queue" endpoint
Flowable.just("hello", "world")
.subscribe(camel.subscriber("seda:queue", String.class));