第91章 Kestrel
Kestrel コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Kestrel コンポーネントを使用すると、Kestrel キューへメッセージを送信したり、Kestrel キューからメッセージを消費したりできます。このコンポーネントは、Kestrel サーバーとの memcached プロトコル通信に spymemcached クライアントを使用します。
警告
そのため、Kestrel プロジェクトは非アクティブであるため、このコンポーネントは が 非推奨になりました。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
kestrel://[addresslist/]queuename[?options]
kestrel://[addresslist/]queuename[?options]
queuename は Kestrel 上のキューの名前です。URI の addresslist 部分には、1 つ以上の
host:port ペアが含まれる場合があります。たとえば、kserver01:22133 のキュー foo に接続するには、以下を使用します。
kestrel://kserver01:22133/foo
kestrel://kserver01:22133/foo
addresslist を省略すると、
localhost:22133 が想定されます。つまり、以下のようになります。
kestrel://foo
kestrel://foo
同様に、addresslist の
host:port ペアからポートを省略すると、デフォルトのポート 22133 が想定されます。以下に例を示します。
kestrel://kserver01/foo
kestrel://kserver01/foo
以下は、クラスター化されたキューの生成に使用される Kestrel エンドポイント URI の例です。
kestrel://kserver01:22133,kserver02:22133,kserver03:22133/massive
kestrel://kserver01:22133,kserver02:22133,kserver03:22133/massive
以下は、キューから同時に消費するために使用される Kestrel エンドポイント URI の例です。
kestrel://kserver03:22133/massive?concurrentConsumers=25&waitTimeMs=500
kestrel://kserver03:22133/massive?concurrentConsumers=25&waitTimeMs=500
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
各 Kestrel エンドポイントでプロパティーを個別に設定するには、エンドポイント URI の
?parameters の部分でプロパティーを指定します。省略された ?parameters はデフォルトで KestrelComponent のベース KestrelelConfiguration で設定される内容に設定されます。以下のプロパティーは KestrelConfiguration や各エンドポイントに設定できます。
| オプション | デフォルト値 | 説明 |
|---|---|---|
concurrentConsumers
|
1
|
同時コンシューマースレッドの数を指定します。 |
waitTimeMs
|
100
|
/t=... を指定します。GET リクエストで Kestrel に渡される待機時間を指定します。
|
注記: waitTimeMs がゼロ(または負の値)に設定されている場合、
/t=... 指定子は GET 要求時にサーバーに渡され ません。キューが空の場合、GET 呼び出しは値なしで即座に返します。ポーリングフェーズで "tight looping" が発生しないように、このコンポーネントは、GET リクエストから何も返されない場合は常に Thread.sleep (100 )を実行します(何も返されない場合のみ)。waitTimeMs に 正の値以外の値を設定することを強く推奨 します。
Spring XML を使用した Kestrel コンポーネントの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
明示的な設定の最も単純な形式は次のとおりです。
これにより、すべてのデフォルト設定で Kestrel コンポーネントが有効になります。つまり、デフォルトで
localhost:22133、100ms の待機時間、および同時でないコンシューマー 1 つを使用します。
ベース設定で特定のオプション(
?properties が指定されていないエンドポイントに設定を提供する)を使用するには、以下のように KestrelConfiguration POJO を設定します。
使用例 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
例 1: 消費 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
from("kestrel://kserver02:22133/massive?concurrentConsumers=10&waitTimeMs=500")
.bean("myConsumer", "onMessage");
from("kestrel://kserver02:22133/massive?concurrentConsumers=10&waitTimeMs=500")
.bean("myConsumer", "onMessage");
例 2: 生成 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
例 3: Spring XML 設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Dependencies リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Kestrel コンポーネントには、以下の依存関係があります。
Spymemcached2.5 (以上)
spymemcached リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
クラスパスに
spymemcached jar が 必要 です。以下は、pom.xml で使用できるスニペットです。
または、jar を直接ダウンロード できます。
制限事項
注記: JVM アサーションが有効になっていると、spymemcached クライアントライブラリーが kestrel で適切に動作し ません。アサーションが有効で、要求されたキーに
/t=... エクステンションが含まれる場合に spymemcached には既知の問題があります(例:エンドポイント URI で waitTimeMs オプションを使用している場合は、強く推奨されます)。
ただし、JVM アサーションを 明示的に有効にしない限り、JVM アサーションは デフォルトで無効 に なっているため、通常の状況では問題は発生しません。
注意すべき点は、Maven の Surefire テストプラグインがアサーションを 有効 にすることです。Maven テスト環境でこのコンポーネントを使用している場合は、
enableAssertions を false に設定する必要がある場合があります。詳細は、surefire:test を参照 してください。