aws-sdk-java-v2-messaging
giuseppe-trisciuoglio/developer-kit
Fournit des modèles de messagerie AWS utilisant le SDK AWS pour Java 2.x pour les files d'attente SQS et les sujets SNS. Prend en charge l'envoi et la réception de messages, les files d'attente FIFO, les DLQ, les abonnements et les modèles pub/sub. À utiliser lors de la mise en œuvre d'une solution de messagerie avec SQS ou SNS.
...Développer toutÀ propos aws-sdk-java-v2-messaging
aws-sdk-java-v2-messaging Il s'agit d'un guide de référence destiné aux développeurs pour la mise en œuvre de la messagerie AWS à l'aide du SDK AWS pour Java 2.x, couvrant à la fois les files d'attente Amazon SQS et les sujets Amazon SNS. Elle résout le problème de la connexion correcte des producteurs, des consommateurs et des flux de publication/abonnement dans les services Java en regroupant les configurations client idiomatiques et les modèles d’opérations sur les messages avec du code exécutable, afin que les ingénieurs développant des systèmes événementiels n’aient pas à les reconstituer à partir de documents épars.
Le fichier SKILL.md et ses fichiers de référence présentent la configuration client (constructeurs SqsClient/SnsClient utilisant DefaultCredentialsProvider et une région), les opérations SQS (création de file d’attente, envoi, réception avec interrogation longue, suppression via un identifiant de reçu), les files d’attente FIFO avec déduplication basée sur le contenu et les identifiants de groupe de messages, les opérations SNS (création d’un sujet, publication avec attributs de sujet et de message, publication FIFO), ainsi que les abonnements SNS vers SQS/e-mail/Lambda. Il présente également l’intégration de Spring Boot avec des clients injectés et des ARN de sujet pilotés par la configuration, et aborde des fonctionnalités avancées telles que les files d’attente de messages non livrables, les opérations par lots, le délai d’expiration de visibilité et l’utilisation de S3 pour les messages de plus de 256 Ko. Les références fournies couvrent en détail les opérations SQS et SNS, l’intégration Spring Boot, ainsi que des liens vers la documentation officielle d’AWS et des référentiels d’exemples.
Il s’adresse aux développeurs backend Java qui mettent en place des architectures de mise en mémoire tampon des messages, de publication/abonnement et pilotées par les événements sur AWS, en particulier ceux qui utilisent Spring Boot. Les identifiants sont gérés via le DefaultCredentialsProvider standard du SDK plutôt que par des secrets codés en dur, et toutes les opérations présentées sont des appels de messagerie courants au niveau de l’application.
FAQ
Quels services AWS ce guide couvre-t-il ?
Amazon SQS (files d’attente standard et FIFO, DLQ, long polling) et Amazon SNS (sujets, publication et abonnements à SQS, e-mail et Lambda) à l’aide du SDK AWS pour Java 2.x.
Comment les identifiants sont-ils gérés ?
Les clients sont créés à l’aide de `DefaultCredentialsProvider` et d’une région explicitement spécifiée, en s’appuyant sur la chaîne d’informations d’identification AWS standard plutôt que sur des clés codées en dur dans la compétence.
Est-ce compatible avec Spring Boot ?
Oui — il comprend des exemples d’intégration Spring Boot avec SnsClient/ObjectMapper injectés et des ARN de sujets fournis via la configuration @Value, ainsi qu’un fichier de référence dédié « spring-boot-integration ».
Peut-il gérer l’ordre FIFO et la déduplication ?
Oui. Il présente la création de files d’attente FIFO et de sujets avec déduplication basée sur le contenu, ainsi que des identifiants de groupe de messages et des identifiants de déduplication pour une livraison ordonnée de type « exactly-once ».
Qu’en est-il des messages volumineux ou des messages ayant échoué ?
Le guide de référence indique d’utiliser S3 pour les messages de plus de 256 Ko et de configurer des files d’attente de messages perdus, un délai d’expiration de visibilité et des opérations par lots pour un traitement robuste.
Tous les fichiers
5fichiers references/detailed-sns-operations.md 5,1Ko Afficher references/aws-official-documentation.md5,2Ko Afficher references/detailed-sqs-operations.md 6,0Ko Afficher references/spring-boot-integration.md 7,7Ko Afficher SKILL.md 7,2 Ko AfficherOverview
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
Tous les fichiers
0 fichiersInstaller aws-sdk-java-v2-messaging
Téléchargez et décompressez les fichiers de compétences dans votre répertoire .claude/skills/.
Télécharger le ZIPClonez le dépôt et copiez les fichiers de compétence dans votre projet.
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
Copier





Maison
