Amazon Simple Queue Service(Amazon SQS) 대기열에서 메시지를 삭제하려고 하면 ReceiptHandleIsInvalid 또는 InvalidParameterValue 오류가 나타납니다. 메시지를 삭제하려면 어떻게 해야 합니까?
간략한 설명
Amazon SQS 대기열에서 메시지를 받을 때마다 메시지에 대한 수신 핸들을 받게 됩니다. 핸들은 메시지 자체가 아닌 메시지 수신 작업과 연결됩니다. 메시지를 삭제하려면 수신 핸들을 제공해야 합니다.
오류 메시지는 FIFO 대기열 또는 표준 SQS 대기열을 사용하는지 여부와 수신 핸들이 올바르지 않거나 만료되었는지 여부에 따라 다릅니다.
FIFO SQS 대기열
수신 핸들이 올바르지 않으면 다음과 유사한 오류가 표시됩니다.
DeleteMessage 작업을 호출할 때 오류 발생(ReceiptHandleIsInvalid): 입력 수신 핸들 'YOUR RECEIPT HANDLE'이 유효한 수신 핸들이 아닙니다.
FIFO 대기열의 경우 가시성 시간 제한 기간이 지나면 수신 핸들이 만료됩니다. 수신 핸들이 만료되면 메시지가 대기열로 돌아갑니다. 메시지를 다시 받으면 새 수신 핸들이 나타납니다. 가시성 시간 제한 기간이 지난 메시지를 삭제하려고 하면 다음과 유사한 오류가 표시됩니다.
DeleteMessage 작업을 호출할 때 오류 발생(InvalidParameterValue): 파라미터 ReceiptHandle에 대한 'YOUR RECEIPT HANDLE' 값이 잘못되었습니다. 사유: 수신 핸들이 만료되었습니다.
표준 SQS 대기열
수신 핸들이 올바르지 않으면 다음과 유사한 오류가 표시됩니다.
DeleteMessage 작업을 호출할 때 오류 발생(ReceiptHandleIsInvalid): 입력 수신 핸들 'YOUR RECEIPT HANDLE'이 유효한 수신 핸들이 아닙니다.
표준 대기열의 경우 오래된 수신 핸들을 사용할 수 있는 경우도 있습니다. 그러나 DeleteMessage API 호출에 최신 수신 핸들을 사용하는 것이 가장 좋습니다. 이전 수신 핸들을 사용하면 다음과 유사한 오류가 발생할 수 있습니다.
DeleteMessage 작업을 호출할 때 오류 발생(InvalidParameterValue): 파라미터 ReceiptHandle에 대한 'YOUR RECEIPT HANDLE' 값이 잘못되었습니다. 사유: 수신 핸들이 만료되었습니다.
해결 방법
유효하지 않거나 만료된 수신 핸들 오류를 방지하려면 올바른 수신 핸들을 사용하여 SQS 대기열 가시성 시간 제한 기간 내에 메시지를 삭제해야 합니다.
메시지를 두 번 이상 수신한 경우 가장 최근의 ReceiveMessage API 호출 응답을 검토하고 ReceiptHandle 값을 식별합니다. 그런 다음 DeleteMessage API를 호출할 때 식별된 ReceiptHandle 값을 사용합니다.
관련 정보
ReceiveMessage
DeleteMessage