вариант

aws-sdk-java-v2-messaging

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

Предоставляет шаблоны обмена сообщениями AWS с использованием AWS SDK для Java 2.x для очередей SQS и тем SNS. Обеспечивает обработку отправки и получения сообщений, работы с очередями FIFO, DLQ, подписками и шаблонами «pub/sub». Используется при реализации обмена сообщениями с помощью SQS или SNS.

...Расширить все
12
Обновлено время 23 августа 2026 г.

О aws-sdk-java-v2-messaging

aws-sdk-java-v2-messaging — это справочник для разработчиков по реализации обмена сообщениями AWS с помощью AWS SDK для Java 2.x, охватывающий как очереди Amazon SQS, так и темы Amazon SNS. Оно решает проблему правильной организации взаимодействия производителей, потребителей и потоков «pub/sub» в Java-сервисах за счёт объединения типичных шаблонов настройки клиентов и работы с сообщениями с готовым к запуску кодом, благодаря чему инженерам, создающим системы, управляемые событиями, не приходится собирать эту информацию по кусочкам из разрозненной документации.

Файл SKILL.md и сопутствующие справочные файлы демонстрируют настройку клиента (конструкторы SqsClient/SnsClient с использованием DefaultCredentialsProvider и региона), операции SQS (создание очереди, отправка, получение с помощью длительного опроса, удаление по идентификатору квитанции), очереди FIFO с дедупликацией по содержанию и идентификаторами групп сообщений, операции SNS (создание темы, публикация с атрибутами темы и сообщения, публикация в режиме FIFO), а также подписки из SNS на SQS, электронную почту и Lambda. Кроме того, здесь показана интеграция Spring Boot с клиентами, получающими конфигурацию посредством инъекции, и ARN тем, определяемыми конфигурацией, а также освещены расширенные функции, такие как очереди неудачных сообщений, пакетные операции, таймаут видимости и использование S3 для сообщений размером более 256 КБ. Включённые ссылки охватывают подробные операции SQS и SNS, интеграцию с Spring Boot, а также ссылки на официальную документацию AWS и репозитории с примерами.

Она предназначена для разработчиков бэкэнда на Java, создающих архитектуры с буферизацией сообщений, модели «публикация-подписка» и событийно-ориентированные архитектуры на AWS, в частности для тех, кто использует Spring Boot. Управление учетными данными осуществляется через стандартный DefaultCredentialsProvider SDK, а не с помощью жестко запрограммированных секретных данных, и все показанные операции представляют собой обычные вызовы обмена сообщениями на уровне приложения.

Часто задаваемые вопросы

Какие сервисы AWS охватывает эта книга?

Amazon SQS (стандартные и FIFO-очереди, DLQ, длительный опрос) и Amazon SNS (темы, публикация и подписки на SQS, электронную почту и Lambda) с использованием AWS SDK для Java 2.x.

Как обрабатываются учетные данные?

Клиенты создаются с использованием DefaultCredentialsProvider и явно указанного региона, опираясь на стандартную цепочку учетных данных AWS, а не на жестко запрограммированные ключи в навыке.

Поддерживается ли Spring Boot?

Да — в него включены примеры интеграции со Spring Boot с встроенными SnsClient/ObjectMapper и ARN тем, предоставляемыми через конфигурацию @Value, а также специальный файл spring-boot-integration.

Поддерживает ли он упорядочивание по принципу FIFO и дедупликацию?

Да. Показано создание очередей FIFO и тем с дедупликацией на основе содержимого, а также идентификаторы групп сообщений и идентификаторы дедупликации для упорядоченной доставки по принципу «точно один раз».

А как насчёт больших сообщений или сообщений с ошибками?

В справочнике описано использование S3 для сообщений размером более 256 КБ, а также настройка очередей неудачных сообщений, таймаута видимости и пакетных операций для надёжной обработки.

Все файлы

5файловreferences/detailed-sns-operations.md5,1КБПросмотрreferences/aws-official-documentation.md5.2КБ Просмотр references/detailed-sqs-operations.md 6,0КБ Просмотр references/spring-boot-integration.md 7,7КБ Просмотр SKILL.md 7,2 КБ Просмотр
Посмотреть на 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

Копировать Копировать
Быстрая настройка: Скопируйте папку со скиллом в каталог .claude/skills/ — Claude автоматически обнаружит и начнет использовать этот скилл
Репозиторий giuseppe-trisciuoglio/developer-kit

Похожие навыки

Cloudflare Manager
Обновлено время 29 июня 2026 г.
pinecone
Обновлено время 29 июня 2026 г.
azure-setup-guide
Обновлено время 29 июня 2026 г.
sentry-architecture-variants
Обновлено время 29 июня 2026 г.
OR