272.6. Camel へのデータの送信
外部ライブラリーがイベントを Camel ルートにプッシュする必要がある場合、リアクティブストリームエンドポイントをコンシューマーとして設定する必要があります。
from("reactive-streams:elements") .to("log:INFO");
elements
ストリームへのハンドルは、CamelReactiveStreams
ユーティリティークラスから取得できます。
CamelReactiveStreamsService camel = CamelReactiveStreams.get(context); Subscriber<String> elements = camel.streamSubscriber("elements", String.class);
サブスクライバーは、elements
ストリームから消費する Camel ルートにイベントをプッシュするために使用できます。
これを RxJava 2 で使用する方法の例を次に示します (ただし、イベントを発行するために任意のリアクティブフレームワークを使用できます)。
Flowable.interval(1, TimeUnit.SECONDS) .map(i -> "Item " + i) .subscribe(elements);
この例では、文字列アイテムが RxJava によって毎秒生成され、上記で定義された Camel ルートにプッシュされます。
272.6.1. ダイレクト API を使用した Camel へのデータの送信
この場合も、ダイレクト 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));