Amazon Web Services

AWS SQS Java 연결 Test

쿨라우드·2018년 8월 30일·조회 5,630

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

댓글 0

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.