옵션
집 Skill 클라우드 인프라 aws-sdk-java-v2-messaging

aws-sdk-java-v2-messaging

giuseppe-trisciuoglio/developer-kit giuseppe-trisciuoglio/developer-kit

SQS 큐 및 SNS 토픽을 위한 AWS SDK for Java 2.x를 사용하여 AWS 메시징 패턴을 제공합니다. 메시지 송수신, FIFO 큐, DLQ, 구독 및 pub/sub 패턴을 처리합니다. SQS 또는 SNS를 사용하여 메시징을 구현할 때 사용하십시오.

...모든 것을 확장하십시오
12
업데이트 된 시간 2026년 8월 23일

소개 aws-sdk-java-v2-messaging

aws-sdk-java-v2-messaging 이 문서는 AWS SDK for Java 2.x를 사용하여 AWS 메시징을 구현하기 위한 개발자 참조 자료로, Amazon SQS 큐와 Amazon SNS 토픽을 모두 다룹니다. 이 문서는 관례에 맞는 클라이언트 설정 및 메시지 처리 패턴을 실제 실행 가능한 코드와 결합함으로써, Java 서비스에서 프로듀서, 컨슈머 및 퍼블/서브(pub/sub) 흐름을 올바르게 연결하는 문제를 해결합니다. 이를 통해 이벤트 주도형 시스템을 구축하는 엔지니어들은 흩어져 있는 문서들을 일일이 찾아 조합할 필요가 없습니다.

SKILL.md 및 관련 참조 파일에서는 클라이언트 구성(DefaultCredentialsProvider 및 리전을 사용하는 SqsClient/SnsClient 빌더), SQS 작업(큐 생성, 전송, 롱 폴링을 통한 수신, 수신 확인 핸들을 통한 삭제), 콘텐츠 기반 중복 제거 및 메시지 그룹 ID를 지원하는 FIFO 큐, SNS 작업(토픽 생성, 주제 및 메시지 속성을 사용한 게시, FIFO 게시), 그리고 SNS에서 SQS/이메일/Lambda로의 구독을 보여줍니다. 또한, 주입된 클라이언트 및 구성 기반 토픽 ARN을 활용한 Spring Boot 통합을 보여주고, 데드 레터 큐, 일괄 작업, 가시성 타임아웃, 256KB 초과 메시지에 대한 S3 사용과 같은 고급 기능에 대해서도 설명합니다. 동봉된 참고 자료에는 상세한 SQS 및 SNS 작업, Spring Boot 통합, 공식 AWS 문서 및 예제 저장소 링크가 포함되어 있습니다.

이 문서는 AWS에서 메시지 버퍼링, 퍼블리시/서브스크립션(pub/sub), 이벤트 주도형 아키텍처를 구축하는 Java 백엔드 개발자, 특히 Spring Boot를 사용하는 개발자를 대상으로 합니다. 자격 증명은 하드코딩된 시크릿이 아닌 SDK의 표준 DefaultCredentialsProvider를 통해 처리되며, 표시된 모든 작업은 일반적인 애플리케이션 수준의 메시징 호출입니다.

자주 묻는 질문

이 문서는 어떤 AWS 서비스를 다루나요?

AWS SDK for Java 2.x를 사용하는 Amazon SQS(표준 및 FIFO 큐, DLQ, 롱 폴링)와 Amazon SNS(토픽, 게시, SQS, 이메일 및 Lambda에 대한 구독)입니다.

인증 정보는 어떻게 처리되나요?

클라이언트는 DefaultCredentialsProvider와 명시적인 리전을 사용하여 구축되며, 스킬에 하드코딩된 키 대신 표준 AWS 자격 증명 체인을 사용합니다.

Spring Boot를 지원하나요?

예. @Value 구성을 통해 제공되는 SnsClient/ObjectMapper 및 토픽 ARN이 주입된 Spring Boot 통합 예제와 전용 spring-boot-integration 참조 파일이 포함되어 있습니다.

FIFO 순서 지정 및 중복 제거를 처리할 수 있나요?

예. 콘텐츠 기반 중복 제거 기능을 갖춘 FIFO 큐 및 토픽 생성은 물론, 순차적이고 정확히 한 번만 전달되는(exactly-once) 방식을 위한 메시지 그룹 ID 및 중복 제거 ID도 보여줍니다.

대용량 메시지나 실패한 메시지는 어떻게 처리되나요?

이 참조 자료에서는 256KB보다 큰 메시지에 대해 S3를 사용하는 방법과, 안정적인 처리를 위해 데드 레터 큐(DLQ), 가시성 타임아웃, 배치 작업을 구성하는 방법을 설명합니다.

모든 파일

5개파일 references/detailed-sns-operations.md 5.1KB 보기 references/aws-official-documentation.md5.2KB보기 references/detailed-sqs-operations.md6.0KB보기 references/spring-boot-integration.md7.7KB보기 SKILL.md7.2 KB보기
GitHub에서 보기

Overview

Provides patterns for SQS queues and SNS topics with AWS SDK for Java 2.x: client setup, queue management, message operations, subscriptions, and Spring Boot integration.

When to Use

  • Setting up SQS queues (standard or FIFO) for message buffering
  • Implementing pub/sub with SNS topics and subscriptions
  • Processing messages from SQS queues with long polling
  • Configuring dead letter queues (DLQ) for error handling
  • Integrating AWS messaging with Spring Boot applications
  • Building event-driven architectures with SQS/SNS

Examples

Quick Setup

Dependencies:

<dependency>    <groupId>software.amazon.awssdk</groupId>    <artifactId>sqs</artifactId></dependency><dependency>    <groupId>software.amazon.awssdk</groupId>    <artifactId>sns</artifactId></dependency>

Client Configuration:

SqsClient sqsClient = SqsClient.builder()    .region(Region.US_EAST_1)    .credentialsProvider(DefaultCredentialsProvider.create())    .build();SnsClient snsClient = SnsClient.builder()    .region(Region.US_EAST_1)    .build();

SQS Operations

Create and Send Message:

String queueUrl = sqsClient.createQueue(CreateQueueRequest.builder()    .queueName("my-queue")    .build()).queueUrl();String messageId = sqsClient.sendMessage(SendMessageRequest.builder()    .queueUrl(queueUrl)    .messageBody("Hello, SQS!")    .build()).messageId();

Receive and Delete Message:

ReceiveMessageResponse response = sqsClient.receiveMessage(ReceiveMessageRequest.builder()    .queueUrl(queueUrl)    .maxNumberOfMessages(10)    .waitTimeSeconds(20)    .build());response.messages().forEach(message -> {    processMessage(message.body());    sqsClient.deleteMessage(DeleteMessageRequest.builder()        .queueUrl(queueUrl)        .receiptHandle(message.receiptHandle())        .build());});

FIFO Queue:

Map<QueueAttributeName, String> attributes = Map.of(    QueueAttributeName.FIFO_QUEUE, "true",    QueueAttributeName.CONTENT_BASED_DEDUPLICATION, "true");String fifoQueueUrl = sqsClient.createQueue(CreateQueueRequest.builder()    .queueName("my-queue.fifo")    .attributes(attributes)    .build()).queueUrl();sqsClient.sendMessage(SendMessageRequest.builder()    .queueUrl(fifoQueueUrl)    .messageBody("Order #12345")    .messageGroupId("orders")    .messageDeduplicationId(UUID.randomUUID().toString())    .build());

SNS Operations

Create Topic and Publish:

String topicArn = snsClient.createTopic(CreateTopicRequest.builder()    .name("my-topic")    .build()).topicArn();snsClient.publish(PublishRequest.builder()    .topicArn(topicArn)    .subject("Test Notification")    .message("Hello, SNS!")    .build());

SNS to SQS Subscription:

String queueArn = sqsClient.getQueueAttributes(GetQueueAttributesRequest.builder()    .queueUrl(queueUrl)    .attributeNames(QueueAttributeName.QUEUE_ARN)    .build()).attributes().get(QueueAttributeName.QUEUE_ARN);snsClient.subscribe(SubscribeRequest.builder()    .protocol("sqs")    .endpoint(queueArn)    .topicArn(topicArn)    .build());

Spring Boot Integration

@Service@RequiredArgsConstructorpublic class OrderNotificationService {    private final SnsClient snsClient;    private final ObjectMapper objectMapper;    @Value("${aws.sns.order-topic-arn}")    private String orderTopicArn;    public void sendOrderNotification(Order order) throws JsonProcessingException {        snsClient.publish(PublishRequest.builder()            .topicArn(orderTopicArn)            .subject("New Order Received")            .message(objectMapper.writeValueAsString(order))            .messageAttributes(Map.of(                "orderType", MessageAttributeValue.builder()                    .dataType("String")                    .stringValue(order.getType())                    .build()))            .build());    }}

Instructions

Implement Message Processing (with Validation)

  1. Create queues/topics with appropriate configuration
  2. Send messages and validate messageId is returned
  3. Receive messages with long polling (waitTimeSeconds: 20)
  4. Process messages - validate payload before processing
  5. Delete messages only after successful processing - verify deletion response
  6. Check DLQ periodically for failed messages using redrivePolicy
  7. Verify delivery - monitor CloudWatch NumberOfMessagesSent metric

Validation Checklist:

// After sendif (messageId == null || messageId.isEmpty()) {    throw new MessagingException("Message send failed - no messageId returned");}// After receiveif (response.messages().isEmpty()) {    log.debug("No messages available - normal with long polling");}// After deleteif (!deleteResponse.sdkHttpResponse().isSuccessful()) {    throw new MessagingException("Message deletion failed");}

Setup Credentials

export AWS_ACCESS_KEY_ID=your-access-keyexport AWS_SECRET_ACCESS_KEY=your-secret-keyexport AWS_REGION=us-east-1

Monitor and Debug

  • CloudWatch metrics: ApproximateNumberOfMessages, NumberOfMessagesSent, NumberOfMessagesReceived
  • Enable SDK logging: software.amazon.awssdk at DEBUG level
  • Use X-Ray for distributed tracing

Best Practices

SQS:

  • Use long polling (20-40s) to reduce empty responses and costs
  • Always delete messages after successful processing
  • Implement idempotent processing for duplicate handling
  • Configure DLQ (redrivePolicy) for failed messages
  • Use FIFO queues when order matters (300 msg/sec limit)

SNS:

  • Use filter policies to reduce unnecessary deliveries
  • Keep messages under 256KB
  • Implement retry with exponential backoff
  • Monitor NumberOfNotificationFailed metric

General:

  • Use IAM roles over static credentials
  • Reuse clients (they are thread-safe)
  • Test with LocalStack or Testcontainers

Detailed References

  • references/detailed-sqs-operations.md
  • references/detailed-sns-operations.md
  • references/spring-boot-integration.md
  • references/aws-official-documentation.md

Constraints and Warnings

  • Message Size: Maximum 256KB for SQS and SNS
  • Visibility Timeout: Undeleted messages reappear after timeout - always delete after processing
  • Input Validation: Sanitize message body before processing - messages may contain untrusted payloads
  • FIFO Naming: Must end with .fifo suffix
  • FIFO Throughput: 300 msg/sec per queue (use partitioning for higher throughput)
  • Message Retention: SQS retains messages max 14 days
  • DLQ Required: Configure dead letter queue to prevent message loss
  • Region-Specific: SQS queues are region-specific; cross-region requires SNS

모든 파일

0개 파일

aws-sdk-java-v2-messaging 설치

스킬 파일을 다운로드하여 .claude/skills/ 디렉터리에 압축을 풀어주세요.

ZIP 다운로드

저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.

git clone https://github.com/giuseppe-trisciuoglio/developer-kit/blob/main/plugins/developer-kit-java/skills/aws-sdk-java-v2-messaging/SKILL.md # Copy SKILL.md to your .claude/skills/ directory

복사 복사
빠른 설정: skill 폴더를 .claude/skills/로 복사하면 Claude가 해당 스킬을 자동으로 감지하여 사용합니다.

관련 스킬

Cloudflare Manager
업데이트 된 시간 2026년 6월 29일
pinecone
업데이트 된 시간 2026년 6월 29일
azure-setup-guide
업데이트 된 시간 2026년 6월 29일
sentry-architecture-variants
업데이트 된 시간 2026년 6월 29일
OR