Amazon SQS의 FIFO 큐 전송 로직 - Amazon Simple Queue Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SQS의 FIFO 큐 전송 로직

다음 개념은 FIFO와의 메시지 교환을 보다 정확하게 이해하는 데 유용합니다.

메시지 전송

여러 메시지를 FIFO 대기열에 연속으로 전송할 때 각 대기열에 고유한 메시지 중복 제거 ID가 있는 경우 Amazon SQS는 메시지를 저장하고 전송을 확인합니다. 그리고 나면, 각 메시지는 메시지가 전송된 순서와 정확히 같은 순서로 수신 및 처리될 수 있습니다.

FIFO 대기열에서 메시지는 메시지 그룹 ID를 기준으로 정렬됩니다. 여러 호스트(또는 동일한 호스트에 있는 다른 스레드)가 메시지 그룹 ID가 동일한 여러 메시지를 FIFO 대기열에 전송하는 경우 Amazon SQS는 도착하는 순서대로 메시지를 저장한 후 처리합니다. Amazon SQS가 메시지 전송 및 수신 순서를 유지하려면 각 생산자가 고유한 메시지 그룹 ID를 사용하여 모든 메시지를 전송해야 합니다.

FIFO 대기열 로직은 메시지 그룹 ID별로만 적용됩니다. 각 메시지 그룹 ID는 Amazon SQS 대기열에서 고유하게 정렬된 메시지 그룹을 나타냅니다. 각각의 메시지 그룹 ID의 경우, 모든 메시지가 엄격한 순서로 전송되고 수신됩니다. 그렇지만, 메시지 그룹 ID 값이 다른 메시지는 다른 순서로 전송 및 수신될 수 있습니다. 메시지 그룹 ID를 메시지와 연결해야 합니다. 사용자가 메시지 그룹 ID를 지정하지 않으면 작업에 실패합니다. 단일 그룹의 정렬된 메시지가 필요한 경우 FIFO 대기열로 전송된 메시지에 동일한 메시지 그룹 ID를 지정합니다.

메시지 수신

특정 메시지 그룹 ID를 사용하는 메시지를 수신하도록 요청할 수 없습니다.

메시지 그룹 ID가 여러 개 있는 FIFO 대기열에서 메시지를 수신할 경우 Amazon SQS는 먼저 메시지 그룹 ID가 동일한 메시지를 가능한 한 많이 반환하려고 시도합니다. 따라서 다른 소비자들은 메시지 그룹 ID가 다른 메시지를 처리할 수 있습니다. 메시지 그룹 ID가 있는 메시지를 수신한 경우, 동일한 메시지 그룹 ID에 대한 메시지는 그 메시지를 삭제하거나 메시지가 표시되는 경우가 아니라면 더 이상 반환되지 않습니다.

참고

MaxNumberOfMessages 작업의 ReceiveMessage 요청 파라미터를 사용하여 단일 호출로 최대 10개 메시지를 받을 수 있습니다. 이러한 메시지는 FIFO 순서를 유지하고 동일한 메시지 그룹 ID를 사용할 수 있습니다. 따라서 동일한 메시지 그룹 ID를 사용할 수 있는 메시지가 10개 미만인 경우, 다른 메시지 그룹 ID로부터 메시지를 받을 수 있으며 동일한 10개 메시지 배치에서 여전히 FIFO 순서를 유지합니다.

다수의 재시도 횟수

FIFO 대기열에서는 다음과 같이 생산자 또는 소비자가 여러 번 재시도할 수 있도록 허용합니다.

  • 생성자가 실패한 SendMessage 작업을 감지한 경우, 동일한 메시지 중복 제거 ID를 사용하여 필요한 횟수 만큼 여러 번 재전송을 시도할 수 있습니다. 생성자가 중복 제거 간격이 만료되기 전에 최소 한 개의 승인을 수신한다고 가정하면 여러 번 재시도를 해도 메시지의 순서에 영향을 미치지도 복제를 도입하지도 않습니다.

  • 소비자가 실패한 ReceiveMessage 작업을 감지한 경우, 동일한 수신 요청 시도 ID를 사용하여 필요한 횟수 만큼 여러 번 재시도할 수 있습니다. 소비자가 제한 시간 초과가 만료되기 전에 최소 한 개의 승인을 수신한다고 가정하면 여러 번 재시도를 해도 메시지의 순서에는 영향을 미치지 않습니다.

  • 메시지 그룹 ID가 있는 메시지를 수신한 경우, 동일한 메시지 그룹 ID에 대한 메시지는 그 메시지를 삭제하거나 메시지가 표시되는 경우가 아니라면 더 이상 반환되지 않습니다.