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 List messages = 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 디렉토리 아래에 파일 확인.
