xautoclaim
XAUTOCLAIM
Redis Developer Course | Redis Technical Support | Redis Enterprise Server |
---|
보류중인 스트림 항목의 소유권을 이전
이 명령은 지정된 기준과 일치하는 보류중인 스트림 항목의 소유권을 이전합니다.
XPENDING과 XCLAIM 호출하는 것과 같습니다.
내부적으로 SCAN 방식을 통해 메시지 전송 실패에 대처하는 더 간단한 방법을 제공합니다.
이 명령은 버전 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)를
부터 스캔을 시작해서 유휴 시간(idle time)이 이하인 항목을 추출합니다. 스캔하는 보류중인 항목의 최대 수는 의 값에 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
답글이 올라오면 이메일로 알려드리겠습니다.