aws-sdk-java-v2-messaging
giuseppe-trisciuoglio/developer-kit
Proporciona patrones de mensajería de AWS utilizando el SDK de AWS para Java 2.x para colas SQS y temas SNS. Gestiona el envío y la recepción de mensajes, colas FIFO, DLQ, suscripciones y patrones pub/sub. Úsalo a la hora de implementar la mensajería con SQS o SNS.
...Expandir todoAcerca de aws-sdk-java-v2-messaging
aws-sdk-java-v2-messaging es una guía de referencia para desarrolladores sobre cómo implementar la mensajería de AWS con el SDK de AWS para Java 2.x, que abarca tanto las colas de Amazon SQS como los temas de Amazon SNS. Resuelve el problema de conectar correctamente productores, consumidores y flujos de publicación/suscripción en servicios Java al consolidar la configuración idiomática del cliente y los patrones de operaciones con mensajes mediante código ejecutable, de modo que los ingenieros que desarrollan sistemas basados en eventos no tengan que recomponerlos a partir de documentación dispersa.
El archivo SKILL.md y sus archivos de referencia muestran la configuración del cliente (creadores SqsClient/SnsClient que utilizan DefaultCredentialsProvider y una región), las operaciones de SQS (crear cola, enviar, recibir con sondeo prolongado, eliminar mediante el identificador de recibo), las colas FIFO con deduplicación basada en el contenido e identificadores de grupo de mensajes, las operaciones de SNS (creación de temas, publicación con atributos de asunto y mensaje, publicación FIFO) y las suscripciones de SNS a SQS, correo electrónico o Lambda. También muestra la integración de Spring Boot con clientes inyectados y ARN de temas basados en la configuración, y destaca características avanzadas como las colas de mensajes perdidos, las operaciones por lotes, el tiempo de espera de visibilidad y el uso de S3 para mensajes de más de 256 KB. Las referencias incluidas abarcan operaciones detalladas de SQS y SNS, la integración con Spring Boot y enlaces a la documentación oficial de AWS y a repositorios de ejemplos.
Está dirigido a desarrolladores de backend en Java que crean arquitecturas de almacenamiento en búfer de mensajes, pub/sub y basadas en eventos en AWS, especialmente aquellos que utilizan Spring Boot. Las credenciales se gestionan a través del DefaultCredentialsProvider estándar del SDK, en lugar de mediante secretos codificados de forma fija, y todas las operaciones mostradas son llamadas de mensajería habituales a nivel de aplicación.
Preguntas frecuentes
¿Qué servicios de AWS abarca este documento?
Amazon SQS (colas estándar y FIFO, DLQ, sondeo prolongado) y Amazon SNS (temas, publicaciones y suscripciones a SQS, correo electrónico y Lambda) utilizando el SDK de AWS para Java 2.x.
¿Cómo se gestionan las credenciales?
Los clientes se crean con DefaultCredentialsProvider y una región explícita, basándose en la cadena de credenciales estándar de AWS en lugar de claves codificadas de forma estática en la skill.
¿Es compatible con Spring Boot?
Sí: incluye ejemplos de integración con Spring Boot con SnsClient/ObjectMapper inyectados y ARN de temas proporcionados mediante la configuración @Value, además de un archivo de referencia específico para la integración con Spring Boot.
¿Admite el orden FIFO y la deduplicación?
Sí. Muestra la creación de colas FIFO y temas con deduplicación basada en el contenido, además de ID de grupo de mensajes e ID de deduplicación para una entrega ordenada y de tipo «exactamente una vez».
¿Qué ocurre con los mensajes de gran tamaño o los mensajes fallidos?
La referencia indica el uso de S3 para mensajes de más de 256 KB y la configuración de colas de mensajes perdidos, el tiempo de espera de visibilidad y las operaciones por lotes para garantizar un procesamiento robusto.
Todos los archivos
5archivosreferences/detailed-sns-operations.md 5,1KB Ver references/aws-official-documentation.md5.2KBVerreferences/detailed-sqs-operations.md6,0KBVerreferences/spring-boot-integration.md7,7KBVerSKILL.md7,2 KBVerOverview
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)
- Create queues/topics with appropriate configuration
- Send messages and validate
messageIdis returned - Receive messages with long polling (
waitTimeSeconds: 20) - Process messages - validate payload before processing
- Delete messages only after successful processing - verify deletion response
- Check DLQ periodically for failed messages using
redrivePolicy - Verify delivery - monitor CloudWatch
NumberOfMessagesSentmetric
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.awssdkat 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
NumberOfNotificationFailedmetric
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
.fifosuffix - 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
Todos los archivos
0 archivosInstalar aws-sdk-java-v2-messaging
Descarga y descomprime los archivos de habilidades en tu directorio .claude/skills/.
Descargar ZIPClona el repositorio y copia los archivos de la habilidad a tu proyecto.
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
Copiar





Hogar
