

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

# Amazon SQS 표준 대기열
<a name="standard-queues"></a>

Amazon SQS는 표준 대기열을 기본 대기열 유형으로 제공하여 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html), [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ReceiveMessage.html) 및 [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_DeleteMessage.html)와 같은 작업에 대해 초당 거의 무제한의 API 직접 호출 수를 지원합니다. 표준 대기열은 최소 1회 메시지 전송을 보장하지만, 고도로 분산된 아키텍처로 인해 두 개 이상의 메시지 사본이 전송될 수 있으며 메시지가 가끔 순서에 맞지 않게 도착할 수 있습니다. 그럼에도 불구하고 표준 대기열은 메시지가 전송되는 순서를 유지하기 위해 최선의 노력을 기울입니다.

`SendMessage`를 사용하여 메시지를 보내면 Amazon SQS는 메시지를 승인하기 전에 여러 가용 영역(AZ)에 메시지를 중복 저장합니다. 이러한 이중화를 통해 단일 컴퓨터, 네트워크 또는 AZ 장애로 인해 메시지에 액세스할 수 없는 상황이 발생하지 않도록 합니다.

Amazon SQS 콘솔을 사용하여 대기열을 생성하고 구성할 수 있습니다. 자세한 지침은 [Amazon SQS 콘솔을 사용하여 표준 대기열 생성](creating-sqs-standard-queues.md#step-create-standard-queue) 섹션을 참조하세요. Java 관련 예는 [Amazon SQS Java SDK 예제](sqs-java-tutorials.md) 섹션을 참조하세요.

**표준 대기열 사용 사례**

표준 메시지 대기열은 애플리케이션에서 두 번 이상 또는 순서에 맞지 않게 도착하는 메시지를 처리할 수 있는 한 다양한 시나리오에 적합합니다. 그러한 예는 다음과 같습니다.
+ **실시간 사용자 요청을 폭넓은 배경 작업과 분리** - 사용자는 시스템이 백그라운드에서 미디어 크기를 조정하거나 인코딩하는 동안 미디어를 업로드할 수 있습니다.
+ **작업을 여러 워커 노드에 할당** - 예를 들면 대량의 신용카드 확인 요청을 처리하는 것입니다.
+ **이후의 처리를 위해 메시지를 배치 처리** - 다수의 항목이 나중에 데이터베이스에 추가되도록 예약합니다.

표준 대기열 관련 할당량에 대한 정보는 [Amazon SQS 표준 대기열 할당량](quotas-queues.md) 섹션을 참조하세요.

표준 대기열 작업에 대한 모범 사례는 [Amazon SQS 모범 사례](sqs-best-practices.md) 섹션을 참조하세요.

# Amazon SQS 최소 1회 전송
<a name="standard-queues-at-least-once-delivery"></a>

Amazon SQS는 중복성과 고가용성을 위해 여러 대의 서버에 메시지 사본을 저장합니다. 드물게는 메시지 사본을 받거나 삭제할 때 메시지 사본을 저장하는 서버 중 하나를 사용할 수 없을 수도 있습니다.

이 문제가 발생할 경우 사용 불가능한 해당 서버에서 메시지의 사본이 삭제되지 않으며, 메시지를 받을 때 해당 메시지 사본을 다시 가져올 수 있습니다. 따라서 애플리케이션이 *idempotent*가 되도록 설계해야 합니다(다시 말해 동일한 메시지를 두 번 이상 처리할 경우 부정적인 영향을 받지 않아야 함).

# Amazon SQS 대기열 및 메시지 식별자
<a name="sqs-queue-message-identifiers"></a>

이 주제에서는 표준 및 FIFO 대기열의 식별자에 대해 설명합니다. 이러한 식별자는 특정 대기열과 메시지를 찾고 조작하는 데 도움이 될 수 있습니다.

## Amazon SQS 표준 대기열의 식별자
<a name="sqs-general-identifiers"></a>

다음 식별자에 대한 자세한 내용은 **[Amazon Simple Queue Service API 참조](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/)를 참조하세요.

### 대기열 이름 및 URL
<a name="queue-name-url"></a>

새 대기열을 생성할 때는 AWS 계정 및 리전에 고유한 대기열 이름을 지정해야 합니다. Amazon SQS는 사용자가 생성한 각 대기열에 대기열 이름과 기타 Amazon SQS 구성 요소가 포함된 대기열 URL**이라는 식별자를 할당합니다. 대기열에서 작업을 실시할 때마다 대기열 URL을 지정합니다.

다음은 AWS 계정 번호 `123456789012`를 갖는 사용자가 소유하는 `MyQueue`라는 이름의 대기열의 대기열 URL입니다.

```
https://sqs.us-east-2.amazonaws.com/123456789012/MyQueue
```

대기열을 나열하고 계정 번호 뒤에 오는 문자열을 구문 분석하여 프로그래밍 방식으로 대기열의 URL을 검색할 수 있습니다. 자세한 내용은 `[ListQueues](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_ListQueues.html)` 단원을 참조하십시오.

### 메시지 ID
<a name="message-id"></a>

각 메시지는 Amazon SQS가 `[SendMessage](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)` 응답으로 반환하는 시스템 할당 메시지 ID**를 수신합니다. 이 식별자는 메시지를 식별하는 데 유용합니다. 메시지 ID의 최대 길이는 100자입니다.

### 수신 핸들
<a name="receipt-handle"></a>

대기열에서 메시지를 수신할 때마다 해당 메시지의 *수신 핸들*을 수신합니다. 이 핸들은 메시지 자체가 아닌 메시지 수신 작업과 관련되어 있습니다. 메시지를 삭제하거나 메시지 표시를 변경하려면, (메시지 ID가 아닌) 수신 핸들을 지정해야 합니다. 또한, 메시지를 수신한 후 언제든지 삭제할 수 있습니다(메시지를 대기열에 배치한 후 회수할 수 없음). 수신 핸들의 최대 길이는 1024자입니다.

**중요**  
메시지를 두 번 이상 받으면, 받을 때마다 다른 수신 핸들을 받습니다. 메시지 삭제를 요청할 때에는 가장 최근에 받은 수신 핸들을 제공해야 합니다(그렇지 않으면 메시지가 삭제될 수 있음).

다음은 수신 핸들을 세 줄로 나눠 표시한 예시입니다.

```
MbZj6wDWli+JvwwJaBV+3dcjk2YW2vA3+STFFljTM8tJJg6HRG6PYSasuWXPJB+Cw
Lj1FjgXUv1uSj1gUPAWV66FU/WeR4mq2OKpEGYWbnLmpRCJVAyeMjeU5ZBdtcQ+QE
auMZc8ZRv37sIW2iJKq3M9MFx1YvV11A2x/KSbkJ0=
```