xautoclaim
XAUTOCLAIM
Redis 開発者教育の申込
|
Redis 定期点検/技術サポートRedis Technical Support |
Redis エンタープライズサーバーRedis Enterprise Server |
|---|
保留中のストリーム項目の所有権を移転
このコマンドは指定した基準に一致する保留中のストリーム項目の所有権を移転します。
XPENDING と XCLAIM を呼び出すのと同じです。
内部的に SCAN 方式でメッセージ送信失敗に対処する、より簡単な方法を提供します。
このコマンドは version 6.2 から使用できます。
このコマンドは XCLAIM と同様に、指定された <group> コンテキストでストリーム <key> の項目に対して動作します。
<min-idle-time> ミリ秒以上保留中で、ID が <start> 以上のメッセージの所有権を <consumer> に移転します。
Example
| コマンド> | XADD sensor1 * temp 10 |
| コマンド> | XADD sensor1 * temp 20 |
| コマンド> | XGROUP CREATE sensor1 CG 0 |
| コマンド> | XREADGROUP GROUP CG C1 count 1 STREAMS sensor1 > |
| 結果> |
1) 1) "sensor1" 2) 1) 1) "1624776138517-0" 2) 1) "temp" 2) "10" |
| コマンド> | XREADGROUP GROUP CG C1 count 1 STREAMS sensor1 > |
| 結果> |
1) 1) "sensor1" 2) 1) 1) "1624776140772-0" 2) 1) "temp" 2) "20" |
| コマンド> | XAUTOCLAIM sensor1 CG C2 5000 0-0 C1 で pending だった2件を C2 に移転する。 |
| 結果> |
1) "0-0" 2) 1) 1) "1624776138517-0" 2) 1) "temp" 2) "10" 2) 1) "1624776140772-0" 2) 1) "temp" 2) "20" |
| コマンド> | XPENDING sensor1 CG |
| 結果> |
1) (integer) 2 2) "1624776138517-0" 3) "1624776140772-0" 4) 1) 1) "C2" C2 に移転されたことを確認できる。 2) "2" |
- <count> オプションは(デフォルト 100) 処理したい項目数の上限(upper limit)です。 このコマンドは内部的にコンシューマーグループの Pending Entry List(PEL) を <start> からスキャンし、 アイドル時間(idle time)が <min-idle-time> 以下の項目を取り出します。 スキャンする保留中項目の最大数は <count> の値に 10 を掛けた(ハードコード)値です。 そのため要求(claimed)された項目数は指定値より少なくなることがあります。
- JUSTID オプションは実際のメッセージを返さず、成功して要求されたメッセージの ID 配列だけ 返すように応答を変更します。 このオプションを使うと再試行カウンターは増えません。
- このコマンドは要求(claimed)されたストリーム ID と項目を配列で返します。 残りの PEL 項目がなければ、完了を知らせるため特別な ID 0-0 を返します。 ただし 0-0 ID でスキャンが完了した後も XAUTOCLAIM を呼び出し続けられます。 十分な時間が経っていれば、以前の保留項目が今度は要求対象になり得ます。
- <min-idle-time> より長くアイドル状態のメッセージだけが要求され、idle time はリセットされます。 これにより、ある時点で保留メッセージを成功して要求できるのは単一コンシューマーだけになり、 同じメッセージを何度も処理する確率をわずかでも下げられます。
- 最後に、XAUTOCLAIM でメッセージを要求すると、そのメッセージの配信試行回数も増えます。 何らかの理由で処理できないメッセージ(例: コンシューマーがメッセージ処理時に系統的にクラッシュする)は 監視で検知できる配信試行回数が高くなります。
構文
XAUTOCLAIM key group consumer min-idle-time start [COUNT count] [JUSTID]
- このコマンドは version 6.2.0 から使用できます。
- 時間計算量は O(1) です。(Count が小さければ)
| << XCLAIM | XAUTOCLAIM | XINFO >> |
|---|
Email
返事がかかってなれば、メールでお知らせします。
