Amazon SQS FIFO 대기열에서 다른 메시지 그룹의 모든 메시지 또는 메시지를 반환하지 않는 이유는 무엇입니까?

최종 업데이트 날짜: 2021년 8월 26일

내 Amazon Simple Queue Service(Amazon SQS) FIFO(선입선출) 대기열은 ReceiveMessage API를 호출할 때 일부 메시지를 반환하지 않습니다. SQS FIFO 대기열이 특정 메시지 그룹 ID 또는 다른 메시지 그룹의 모든 메시지를 반환하지 않는 이유는 무엇입니까?

해결 방법

FIFO 대기열의 경우 특정 메시지 그룹 ID에서 메시지 수신을 요청할 수 없습니다. ReceiveMessage API 호출에서 MaxNumberOfMessages 파라미터를 지정하면 SQS는 가능한 한 동일한 메시지 그룹 ID가 있는 메시지를 반환합니다. 그런 다음, 다른 소비자 또는 다른 ReceiveMessage 호출이 다른 메시지 그룹 ID의 메시지를 처리할 수 있습니다.

FIFO 대기열의 경우 특정 메시지 그룹 ID에 속하는 메시지를 수신하면 다음 사항에 유의하세요.

  • 동일한 그룹 ID에서 더 많은 메시지를 수신하려면 현재 수신 호출에서 메시지를 삭제하거나 이동해야 합니다.
    참고: 메시지는 이동 가능 상태에서 이동해야 합니다.
  • 다른 메시지 그룹에서는 메시지를 수신할 수 없습니다.

FIFO 대기열은 처음 20,000개의 메시지를 살펴보고 사용 가능한 메시지 그룹을 결정합니다. 처음 20,000개의 메시지에 있는 모든 메시지 그룹이 이동 중인 메시지로 인해 차단된 경우 처음 20,000개 이상의 다른 그룹의 메시지는 반환되지 않습니다. 자세한 내용은 동일한 그룹 ID의 메시지 백로그가 커지지 않도록 방지를 참조하세요.

예제 A

FIFO 대기열에는 총 20,001개의 메시지가 있습니다. 처음 20,000개의 메시지는 메시지 그룹 1에 속하며 마지막 메시지는 메시지 그룹 2에 속합니다. 대기열에서 메시지 수신을 시도하면 그룹 1에서만 메시지를 수신하게 됩니다. 연속적으로 ReceiveMessage를 호출하면 비어 있는 수신이 됩니다. 이 문제는 FIFO가 그룹 1에 속한 메시지만 살펴보고 해당 그룹이 현재 호출에 의해 차단되기 때문입니다.

예제 B

FIFO 대기열에는 총 20,000개의 메시지가 있습니다. 첫 번째 19,999개의 메시지는 메시지 그룹 1에 속하며 마지막 메시지는 메시지 그룹 2에 속합니다. 대기열에서 메시지 수신을 시도하면 첫 번째 ReceiveMessage 호출은 그룹 1에 속한 메시지를 가져옵니다. 두 번째 ReceiveMessage 호출은 그룹 2에 속한 메시지를 가져옵니다. 추가 ReceiveMessage 호출은 이제 두 그룹이 현재 호출에 의해 차단되므로 비어 있는 수신이 됩니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?