web-dev-qa-db-ja.com

Apache Camel:「direct:start」エンドポイント-それはどういう意味ですか?

Apache Camelは初めてです。誰かがキャメルで「direct:start」の意味を説明できますか。見てください

http://camel.Apache.org/http

from("direct:start")
.to("http://myhost/mypath");

ありがとう。

45
Soumya Simanta

上記の「direct:start」は、ルートが「start」という名前の Direct Component で始まることを単に示しています。

直接エンドポイントは、ルートの同期呼び出しを提供します。 Exchangeをdirect:startエンドポイントに送信する場合は、ProducerTemplateを作成し、さまざまな送信メソッドを使用します。

ProducerTemplate template = context.createProducerTemplate();

template.sendBody("direct:start", "This is a test message");

名前startについて特別なものはありません。単にエンドポイントを参照するときに使用する名前であり、direct:foo

53
gregwhitaker

Startという名前のメソッドとして直接ルートを想定しているため、特定の操作を実行するにはstartメソッド/ direct routeを呼び出す必要があります。以下の例が役立ちます。

入力ファイルがXXXXロケーションで使用可能になり、lineに到達すると、最初のルートがトリガーされ、実際のフローは2番目のルートに進みます。基本的に、エンドポイントからの直接ルートは、何らかのプロデューサーエンドポイントによってトリガーされます。

<route id="fileRoute">
   <from uri="file:XXXX">
      ..
   <to uri="direct:start">
</route>

<route id="directStartRoute">
    <from uri="direct:start">
    <to uri="http://myhost/mypath">
</route>
7
selva

Apache Camel directは、基本的に、同じキャメルコンテキストでExchangeをあるルートから別のルートに送信するためのものです。したがって、AMQからメッセージを取得しており、取得したすべてのメッセージのヘッダーを入力して、メール受信者リストに送信するとします。したがって、ここでは、次の説明を持つ新しいルーターを作成する必要があります

from(“direct:populateHeaders”)
.setHeader(“myHeader”, “myHeaderValue”)
.end()

そして、任意のルートから、次のように記述することにより、Exchangeオブジェクトをこのルートに送信できます。

...

.to(“direct:populateHeaders”)

...

これは、キャメルコンテキストでは機能しないことに注意してください。

6
Arman Tumanyan

direct:startは、2つのエンドポイント間で通信するための同期方法を提供します。これは、一般的なファイルまたはxmlメッセージではなく、ラクダメッセージを使用して通信する場合にのみ使用されます。

3
Atul Kumar

このように考えてください。ラクダのルートにメッセージを送信するときは常に2つのことがあります。 1.メッセージの配信方法を定義するURIスキーム。そして、どのコンポーネントタイプに配信されます。 2.そのコンポーネントのインスタンスを定義するURIパス。

次に、direct:startの場所に移動します。 'direct'は、このメッセージがDirectコンポーネントに同期的に送信されることを示します。 'start'は、このメッセージを配信するDirect Componentのインスタンスを示します。

異なるURIパスの重要性:次に、異なるルートを使用する必要があるかどうかを検討します。また、2つの異なるスレッドから同期的にメッセージを生成したいと考えています。ルートの開始点として「direct:start」を使用しても機能しません。条件付き処理コンポーネントがある場合を除き、初心者の場合はこれを忘れてください。両方のルートにメッセージを正常に配信するには、「direct:somename1」と「direct:somename2」の2つのエントリを追加する必要があります。 'start'は必須ではありません。好きな名前を付けることができます。

Martin FowlerのEIP本からいくつかの章を読むことをお勧めします。そもそも素晴らしいリソースです。これにより、キャメルを非常に理解しやすくなります。

2
Mudassir Rehman

開始を忘れます。 startは単なる停止ポイントの名前です(直接)。

直接コンポーネントは、同じコンテキストのルート間のブリッジとして使用できます。

0
Kumar Aditya