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 返事がかかってなれば、メールでお知らせします。