SQS 6

AWS SQS 들이파기

안녕하세요~~ 여러분~! 공부하는개발자 입니다 ㅎㅎㅎ 이번 시간에는 바로바로~ SQS에 대해서 알아보려고 합니다. SQS란 무엇인지, Java + Spring으로 어떻게 사용할 수 있는지, 사용시 주의할 점 등은 무엇인지 간단바리(들이파기라 해놓고 간단바리..?)로 살펴보겠습니다. 바로 시작해보죠! AWS SQS란? SQS는 Simple Queue Service의 약자입니다. 애플리케이션 간의 메시지를 전달하기 위한 아주 '간단한' Queue 라고 생각하면 됩니다. 홈페이지 설명에 따르면, 지속성이 우수하고 사용 가능한 보안 호스팅 대기열을 제공하며, dead-letter queue, 표준대기열, FIFO 대기열을 지원하고 있습니다. SQS와 MQ의 차이점 RabbitMQ를 들어본 적이 있는 사람이라면,..

[AWS SQS 들이파기] DLQ(Dead-Letter Queue) 설정하기

이제 DLQ를 설정하고 테스트를 해보겠습니다. 우선 삭제된 Message가 들어갈 Queue를 새로 하나 만들어 주어야 합니다. sqs-study-dlq 라는 이름을 가진 Standard Queue를 빠르게 만들었습니다 ㅎㅎㅎ (한 번 해봤으니 쉽죠..?) 그리고 sqs-study 로 들어가 편집 > 배달 못한 편지 대기열을 설정해 주었습니다. 간단합니다 ㅎㅎ..저장을 누르면 이렇게 나옵니다. 이제 테스트를 해보겠습니다! 간단하게 console로 쓱-샥 해볼 예정 ㅎㅎ 1. sqs-study에서 메시지 전송 2. 메시지 폴링을 반복적으로 클릭! 폴링 진행 상황이 가득차면 그 위에 있는 메시지 폴링을 클릭할 수 있습니다 ㅎㅎㅎ 3. 메시지 수신수가 5를 넘어가게 되면..! 어느덧 사용 가능한 메시지가 0으..

[AWS SQS 들이파기] SQS에서 메시지 받기 II (Java + Gradle + Spring)

모든 코드는 github에 올라가 있습니다. SQS로부터 메시지를 받는 두 번째 방법은~~ 바로바로 Annotation을 이용하는 방법입니다. 아래의 PersonListener 코드를 봐보죠! @Slf4j @Component // Bean 등록을 꼭 해줘야 한다! public class PersonListener { @SqsListener(value = "sqs-study", deletionPolicy = SqsMessageDeletionPolicy.NEVER) public void listen(@Payload Person person, @Headers Map headers, Acknowledgment ack) { log.info("{}", person); log.info("{}", headers); l..

[AWS SQS 들이파기] SQS에서 메시지 받기 I (Java + Gradle + Spring)

모든 코드는 github에 올라가 있습니다. 이제 메시지 보내는 것은 성공했으니 보낸 메시지를 받아보려고 합니다. 그 전에 MessageConverter 에 대해서 간단히 알아 봅시다 ㅎㅎ QueueMessagingTemplate은 단순한 String을 주고받는 메소드 외에, Java Object를 받는 다양한 전송 메소드들이 존재합니다. 그 중에 convertAndSend() 와 receiveAndConvert()는 MessageConveter 인터페이스에게 직렬화/역직렬화 책임을 위임하고 있습니다. 실제로 코드를 살펴보면 아래와 같습니다. AbstractMessageSendingTemplate (spring-messaging) @Override public void convertAndSend(Stri..

[AWS SQS 들이파기] AWS SQS로 메시지 보내기 (Java + Gradle + Spring)

SQS로 메시지를 보내는데 몇 가지 방법이 있을 것 같지만, 저는 Java Spring (boot) 개발자이니 해당 스택으로 SQS에 메시지를 쏴보겠습니다 ㅎㅎ 아하 생각해보니 새 PJ을 만들어야 하네요..! 모든 코드는 github에 있습니다. 1. 의존성 설정 plugins { id 'org.springframework.boot' version '2.3.3.RELEASE' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } group = 'com.lannstark' version = '0.1.0' sourceCompatibility = '11' configurations { compileOnly { extendsFrom ..

[AWS SQS 들이파기] SQS 만들어보기

1. AWS console에서 SQS를 검색해 들어갑니다. 2. 대기열 생성을 눌러줍니다. Amazon SQS > 대기열이라고 있는데, Queue를 대기열로 번역했네요. 뭔가 어색합니다 ㅋㅋㅋㅋ 3. 대기열 세부정보 설정 가장 먼저 나오는 것은 대기열 유형을 표준으로 고를지, FIFO로 고를지에 관한 것입니다. 둘의 가장 큰 차이점으로는 크게 4가지가 있습니다. 순서 : 표준 Queue는 순서를 가능한 보장하려 하나 항상 보장되는 것은 아니지만, FIFO Queue는 순서를 무조건 보장합니다. 특정 메시지 전송 횟수 : 표준 Queue는 메시지큐에 쌓여있는 메시지를 최소 1회 전송하지만, 가끔 한 개 이상의 메시지 사본이 배달될 수 있습니다. 때문에 메시지를 Application에서 idempotent을..