XAUTOCLAIM

레디스 개발자 교육 신청 레디스 정기점검/기술지원
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 답글이 올라오면 이메일로 알려드리겠습니다.