1. 개요
SQS 연결
2. 자바로 연결
본 내용은 아마존 문서를 보고 그대로 따라함.
2-1. 메이븐 설정
<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-sqs</artifactId> <version>LATEST</version> </dependency>
2-2. 코드
import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.*; import java.util.List; import java.util.Map.Entry; public class SQSSimpleJavaClientExample { public static void main(String[] args) { final AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient(); System.out.println("==============================================="); System.out.println("Getting Started with Amazon SQS Stanard Queue"); System.out.println("===============================================\n"); try { System.out.println("Creating a new SQS queue called MyQueue.\n"); final CreateQueueRequest createQueueRequest = new CreateQueueRequest("MyQueue"); final String myQueueUrl = sqs.createQueue(createQueueRequest).getQueueUrl(); System.out.println("Listing all queues in your account.\n"); for (final String queueUrl : sqs.listQueues().getQueueUrls()) { System.out.println(" QueueUrl: " + queueUrl); } System.out.println(); System.out.println("Sending a message to MyQueue.\n"); sqs.sendMessage(new SendMessageRequest(myQueueUrl, "This is my message text.")); System.out.println("Receiving messages from MyQueue.\n"); final ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl); final Listmessages = sqs.receiveMessage(receiveMessageRequest).getMessages(); for (final Message message : messages) { System.out.println("Message"); System.out.println(" MessageId: " + message.getMessageId()); System.out.println(" ReceiptHandle: " + message.getReceiptHandle()); System.out.println(" MD5OfBody: " + message.getMD5OfBody()); System.out.println(" Body: " + message.getBody()); for (final Entry entry : message.getAttributes().entrySet()) { System.out.println("Attribute"); System.out.println(" Name: " + entry.getKey()); System.out.println(" Value: " + entry.getValue()); } } System.out.println(); System.out.println("Deleting a message.\n"); final String messageReceiptHandle = messages.get(0).getReceiptHandle(); sqs.deleteMessage(new DeleteMessageRequest(myQueueUrl, messageReceiptHandle)); System.out.println("Deleting the test queue.\n"); sqs.deleteQueue(new DeleteQueueRequest(myQueueUrl)); } catch (final AmazonServiceException ase) { System.out.println( "Caught an AmazonServiceException, which means " + "your request made it to Amazon SQS, but was " + "rejected with an error response for some reason."); System.out.println("Error Message: " + ase.getMessage()); System.out.println("HTTP Status Code: " + ase.getStatusCode()); System.out.println("AWS Error Code: " + ase.getErrorCode()); System.out.println("Error Type: " + ase.getErrorType()); System.out.println("Request ID: " + ase.getRequestId()); } catch (final AmazonClientException ace) { System.out.println("Caught an AmazonClientException, which means " + "the client encountered a serious internal problem while " + "trying to communicate with Amazon SQS, such as not " + "being able to access the network."); System.out.println("Error Message: " + ace.getMessage()); } } }
3. 실행
3-1. 에러 해결
=============================================== Getting Started with Amazon SQS Stanard Queue =============================================== Creating a new SQS queue called MyQueue. Caught an AmazonServiceException, which means your request made it to Amazon SQS, but was rejected with an error response for some reason. Error Message: Access to the resource https://sqs.ap-northeast-2.amazonaws.com/ is denied. (Service: AmazonSQS; Status Code: 403; Error Code: AccessDenied; Request ID: 2058b589-eb11-5c53-96b7-e1882651471a) HTTP Status Code: 403 AWS Error Code: AccessDenied Error Type: Client Request ID: 2058b589-eb11-5c53-96b7-e1882651471a
- 이런 에러가 나면 혹시 크레덴셜이 잘 연결되어 있는지 확인.
- 윈도우 서버라면 .aws 디렉토리 아래에 파일 확인.