Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第13章 Beanstalk
Beanstalk コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.15 で利用可能
camel-beanstalk プロジェクトは、Beantalk ジョブのジョブの取得および後処理のための Camel コンポーネントを提供します。
Beanstalk ジョブライフサイクルの詳細は、Beanstalk プロトコル を参照してください。
Dependencies リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Maven ユーザーは以下の依存関係を追加する必要があります。
pom.xml
<dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-beanstalk</artifactId> <version>${camel-version}</version> </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-beanstalk</artifactId>
<version>${camel-version}</version>
</dependency>
ここで、
${camel-version
} は実際のバージョンの Camel (2.15.0 以降)に置き換える必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
beanstalk://[host[:port]][/tube][?options]
beanstalk://[host[:port]][/tube][?options]
Beanstalk のデフォルトは
port
または host
と port
のいずれかを省略できます(localhost と 11300)。tube
を省略すると、Beanstalk コンポーネントは "default" という名前の tube を使用します。
リッスンしている場合、おそらくいくつかのツーブからのジョブを監視することをお勧めします。たとえば、プラス記号で区切ります。
beanstalk://localhost:11300/tube1+tube2
beanstalk://localhost:11300/tube1+tube2
Tube 名はデコードされるため、Tube の名前に + や ? などの特殊文字が含まれている場合は、適切に URL エンコードするか、RAW 構文を使用する必要があります。詳細は、を参照してください。
このようにして、ジョブを Beantalk に書いた時に複数の tub を指定できません。
一般的な URI オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前
|
デフォルト値
|
説明
|
---|---|---|
jobPriority | 1000 | ジョブの優先度。(0 は最大で、Beantalk プロトコルを参照) |
jobDelay | 0 | ジョブの遅延(秒単位)。 |
jobTimeToRun | 60 | 秒単位でのジョブの実行時間(0 の場合)、beanstalkd デーモンがそれを 1 に自動的に引き上げます。Beanstalk プロトコルを参照してください)。 |
プロデューサー UIR オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
プロデューサーの動作は
command
パラメーターの影響を受けます。このパラメーターは、ジョブの動作を指示します。
名前
|
デフォルト値
|
説明
|
---|---|---|
command | put |
|
コンシューマー UIR オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーは、予約された直後にジョブを削除したり、Camel ルートが処理するまで待ちます。最初のシナリオはメッセージキューに似ていますが、2 番目のシナリオは job queue に似ています。この動作は、
consumer.awaitJob
パラメーターによって制御されます。このパラメーターは、デフォルトで true
に相当します(Beantalkd の性質)。
同期されると、コンシューマーは正常なジョブの完了時に
delete
を呼び出して、失敗時に bury
を呼び出します。URI で consumer.onFailure
パラメーターを指定すると、失敗時に実行するコマンドを選択できます。bury
、delete
または release
の値を取ることができます。
JavaBeanstalkClient ライブラリーの同じパラメーターに対応するブール値パラメーター
consumer.useBlockIO
があります。デフォルトでは、true
です。
release
を指定する際には、失敗したジョブが同じ tube ですぐに利用可能になり、コンシューマーが再度取得を試みるため注意してください。release
を指定し、jobDelay を指定できます。
名前
|
デフォルト値
|
説明
|
---|---|---|
onFailure | bury | 処理に失敗した場合に使用するコマンド。bury、delete、または release のいずれかを選択できます。 |
useBlockIO | true | blockIO を使用するかどうか。 |
awaitJob | true | beanstalk からジョブを確認する前にジョブが完了するまで待機するかどうか。 |
beanstalk コンシューマーはスケジュールされたポーリングコンシューマーです。これは、コンシューマーがポーリングする頻度など、設定可能なオプションが多いことを意味します。詳細は コンシューマーのポーリング を参照してください。
コンシューマーヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
コンシューマーは、Exchange メッセージに複数のジョブヘッダーを保存します。
プロパティー
|
タイプ
|
説明
|
---|---|---|
beanstalk.jobId | long | ジョブ ID: |
beanstalk.tube | string | このジョブを含む tube の名前 |
beanstalk.state | string | "ready" または "delayed" または "reserved" または "buried" (予約されている必要があります) |
beanstalk.priority | long | 優先度値セット |
beanstalk.age | int | このジョブを作成した put コマンドからの秒単位の時間 |
beanstalk.time-left | int | サーバーがこのジョブを準備状態にあるキューに配置するまでの秒数 |
beanstalk.timeouts | int | 予約中にこのジョブがタイムアウトした回数 |
beanstalk.releases | int | クライアントが予約からこのジョブをリリースした回数 |
beanstalk.buries | int | このジョブが入念された回数 |
beanstalk.kicks | int | このジョブが起動した回数 |
例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この Camel コンポーネントを使用すると、ジョブを処理し、それらを Beanstalkd デーモンに提供することができます。簡単なデモルートは以下のようになります。
from("timer:dig?period=30seconds"). setBody(constant(10)).log("Kick ${in.body} buried/delayed tasks"). to("beanstalk:testTube?command=kick");
from("timer:dig?period=30seconds").
setBody(constant(10)).log("Kick ${in.body} buried/delayed tasks").
to("beanstalk:testTube?command=kick");
最初のルートでは、tube "testTube" で新しいジョブをリッスンしています。受け取ったら、メッセージボディーの整数値を解析しようとしています。正常に完了するとログを記録し、この正常な交換の完了により、Camel コンポーネントを使用して Beantalk からこのジョブを自動的に 削除 します。一方、ジョブデータを解析できない場合、エクスチェンジは失敗して、Camel コンポーネントはデフォルトでこれをバウズします。これにより、後で処理したり、失敗したジョブを手動で検査したりできます。
そのため、2 つ目のルートは Beanstalk に定期的に要求して、buried および/または delayed 状態から通常のキューに 10 個のジョブを 開始 します。