개발/java

SQS SDK의 Acknowledgment에 대하여

코딩하는꽃개 2023. 5. 23. 13:00
반응형

Amazon SQS Acknowledgment의 종류

Amazon SQS(Simple Queue Service)에서 Acknowledgment(확인 응답)은 메시지를 처리한 후 메시지의 상태를 표시하고 해당 메시지를 안전하게 삭제하기 위해 사용됩니다. SQS는 다양한 Acknowledgment 유형을 제공하여 메시지 처리의 유연성과 안정성을 보장합니다. 이 글에서는 Amazon SQS에서 제공하는 Acknowledgment의 주요 종류를 살펴보겠습니다.

@SqsListener(value = "${sqs.name.s3}", deletionPolicy = SqsMessageDeletionPolicy.NEVER)
public void s3Consumer(EventRequestDTO<S3Record> message, Acknowledgment acknowledgment) {
    // 큐 제거
    acknowledgment.acknowledge();

    // 큐 딜리버리
    pipelineService.delivery(message);
}


1. Positive Acknowledgment

Positive Acknowledgment는 메시지 처리가 성공적으로 완료되었음을 의미합니다. 처리된 메시지는 안전하게 삭제됩니다. 이러한 Acknowledgment를 사용하면 메시지 처리 중 예기치 않은 오류가 발생해도 해당 메시지를 다시 처리할 필요가 없습니다.

Positive Acknowledgment를 수행하기 위해 SQS에서는 DeleteMessage API를 사용합니다. 이 API를 호출하여 처리된 메시지를 명시적으로 삭제할 수 있습니다.

2. Negative Acknowledgment

Negative Acknowledgment는 메시지 처리 중에 예외 또는 오류가 발생하여 메시지 처리가 실패한 경우 사용됩니다. 처리에 실패한 메시지는 재처리를 위해 다시 대기열로 반환됩니다. Negative Acknowledgment를 통해 재처리가 필요한 메시지를 추적하고, 필요한 조치를 취하여 이러한 메시지를 다시 처리할 수 있습니다.

Negative Acknowledgment를 수행하기 위해 SQS에서는 ChangeMessageVisibility API를 사용합니다. 이 API를 호출하여 메시지의 가시성(visibility)을 조정하여 해당 메시지를 재처리할 수 있습니다.

3. Batch Acknowledgment

Batch Acknowledgment는 여러 메시지를 한 번에 처리하는 경우 사용됩니다. 여러 메시지를 일괄 처리한 후에는 일괄 처리된 모든 메시지가 성공적으로 처리되었는지 확인해야 합니다. Batch Acknowledgment를 사용하여 모든 메시지가 성공적으로 처리되었음을 확인한 후에만 메시지를 삭제할 수 있습니다.

Batch Acknowledgment를 수행하기 위해 SQS에서는 DeleteMessageBatch API를 사용합니다. 이 API를 호출하여 한 번에 여러 메시지를 삭제할 수 있습니다.

4. Manual Acknowledgment

Manual Acknowledgment는 메시지 처리 중에 수동으로 Acknowledgment를 제어해야 하는 경우 사용됩니다. 이 경우, 메시지 처리 후에 개발자가 명시적으로 Acknowledgment를 수행해야 합니다. Manual Acknowledgment를 사용하면 메시지 처리 과정에서 더욱 정밀한 제어를 할 수 있습니다.

Manual Acknowledgment를 수행하기 위해 개발자는 메시지 처리 후에 적절한 SQS API를 호출하여 Acknowledgment를 수행해야 합니다. 예를 들어, DeleteMessage API를 호출하여 메시지를 삭제할 수 있습니다.

결론

Amazon SQS에서 제공하는 다양한 종류의 Acknowledgment를 통해 메시지 처리의 유연성과 안정성을 보장할 수 있습니다. Positive Acknowledgment를 통해 메시지를 안전하게 삭제하고, Negative Acknowledgment를 통해 재처리가 필요한 메시지를 추적할 수 있습니다. Batch Acknowledgment를 사용하여 여러 메시지를 효율적으로 처리하고, Manual Acknowledgment를 통해 메시지 처리 과정을 더욱 세밀하게 제어할 수 있습니다. 적절한 Acknowledgment 유형을 선택하여 메시지 처리 시나리오에 맞게 활용해보세요.

반응형

'개발 > java' 카테고리의 다른 글

Spring Boot 에 AWS SQS 적용하기  (0) 2023.05.22
Spring Data JPA란?  (0) 2023.05.21
Spring Data JPA 관계 매핑하기  (0) 2023.05.20
QueryDsl SpringBoot JPA 레포지토리 만들기  (0) 2023.05.19
JPA 데이터 소스 여러개 적용하기  (0) 2023.05.18