Amazon Simple Queue Service 메시지를 전송, 수신 및 삭제
메시지는 분산된 구성 요소가 송신 및 수신할 수 있는 데이터 조각입니다. 메시지는 항상 SQS 대기열을 사용하여 전달됩니다.
다음 예제에서 사용되는 sqsClient 변수는 다음 코드 조각에서 만들 수 있습니다.
SqsClient sqsClient = SqsClient.create();
정적 create() 메서드를 사용하여 SqsClient를 만들면 SDK가 기본 리전 공급자 체인을 사용하여 리전을 구성하고 기본 자격 증명 공급자 체인을 사용하여 자격 증명을 구성합니다.
메시지 전송
SqsClient 클라이언트의 sendMessage 메서드를 호출하여 Amazon Simple Queue Service 대기열에 단일 메시지를 추가합니다. 대기열의 URL, 메시지 본문 및 선택적 지연 값(초 단위)이 포함된 SendMessageRequest
가져옵니다.
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
코드
sqsClient.sendMessage(SendMessageRequest.builder() .queueUrl(queueUrl) .messageBody("Hello world!") .delaySeconds(10) .build()); sqsClient.sendMessage(sendMsgRequest);
한 번의 요청에 여러 메시지를 전송
SqsClient의 sendMessageBatch 메서드를 사용하여 단일 요청에서 메시지를 2개 이상 전송합니다. 이 메서드는 전송할 메시지 목록과 대기열 URL이 포함된 SendMessageBatchRequest
가져옵니다.
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
코드
SendMessageBatchRequest sendMessageBatchRequest = SendMessageBatchRequest.builder() .queueUrl(queueUrl) .entries(SendMessageBatchRequestEntry.builder().id("id1").messageBody("Hello from msg 1").build(), SendMessageBatchRequestEntry.builder().id("id2").messageBody("msg 2").delaySeconds(10).build()) .build(); sqsClient.sendMessageBatch(sendMessageBatchRequest);
GitHub의 전체 예제
메시지 검색
SqsClient의 receiveMessage 메서드를 호출하여 현재 대기열에 있는 메시지를 검색합니다. 이 메서드는 대기열 URL이 포함된 ReceiveMessageRequest
가져옵니다.
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
코드
try { ReceiveMessageRequest receiveMessageRequest = ReceiveMessageRequest.builder() .queueUrl(queueUrl) .maxNumberOfMessages(5) .build(); List<Message> messages = sqsClient.receiveMessage(receiveMessageRequest).messages(); return messages; } catch (SqsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return null;
GitHub의 전체 예제
수신 후 메시지 삭제
메시지를 수신하고 콘텐츠를 처리한 후에는 메시지의 수신 핸들과 대기열 URL을 SqsClient's deleteMessage
가져옵니다.
import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sqs.SqsClient; import software.amazon.awssdk.services.sqs.model.*; import java.util.List;
코드
try { for (Message message : messages) { DeleteMessageRequest deleteMessageRequest = DeleteMessageRequest.builder() .queueUrl(queueUrl) .receiptHandle(message.receiptHandle()) .build(); sqsClient.deleteMessage(deleteMessageRequest); }
GitHub의 전체 예제
추가 정보
-
Amazon Simple Queue Service 개발자 안내서의 Amazon Simple Queue Service 큐 작동 방식
-
Amazon Simple Queue Service API 참조의 SendMessage
-
Amazon Simple Queue Service API 참조의 SendMessageBatch
-
Amazon Simple Queue Service API 참조의 ReceiveMessage
-
Amazon Simple Queue Service API 참조의 DeleteMessage