Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Libreria client estesa Amazon SNS per Java

Modalità Focus
Libreria client estesa Amazon SNS per Java - Amazon Simple Notification Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Prerequisiti

Di seguito sono indicati i prerequisiti per l’utilizzo di Libreria client ampia di Amazon SNS per Java:

  • Un SDK. AWS

    L'esempio in questa pagina utilizza l'SDK AWS Java. Per installare e configurare l'SDK, consulta Impostare il AWS SDK per Java nella AWS SDK for Java Guida per gli sviluppatori.

  • E Account AWS con le credenziali appropriate.

    Per crearne uno Account AWS, vai alla AWS home page, quindi scegli Crea un AWS account. Segui le istruzioni.

    Per informazioni sulle credenziali, consulta Configurare AWS le credenziali e la regione per lo sviluppo nella Guida per gli AWS SDK for Java sviluppatori.

  • Java 8 o versione successiva.

  • La libreria client ampia di Amazon SNS per Java (disponibile anche da Maven).

Configurazione dello storage dei messaggi

La libreria Amazon SNS Extended Client utilizza la Payload Offloading Java Common Library AWS per l'archiviazione e il recupero dei messaggi. Puoi configurare il seguente Amazon S3 Opzioni di archiviazione dei messaggi:

  • Soglia di dimensioni dei messaggi personalizzate: i messaggi con payload e attributi che superano questa dimensione vengono archiviati automaticamente in Amazon S3.

  • alwaysThroughS3flag — Imposta questo valore per true forzare l'archiviazione di tutti i payload dei messaggi in Amazon S3. Ad esempio:

    SNSExtendedClientConfiguration snsExtendedClientConfiguration = new SNSExtendedClientConfiguration() .withPayloadSupportEnabled(s3Client, BUCKET_NAME).withAlwaysThroughS3(true);
  • Chiave KMS personalizzata: la chiave da utilizzare per la crittografia lato server nel tuo bucket Amazon S3.

  • Nome del bucket: il nome del bucket Amazon S3 per l'archiviazione dei payload dei messaggi.

Esempio: pubblicazione di messaggi su Amazon SNS con payload memorizzato in Amazon S3

L'esempio di codice seguente mostra come:

  • Creare una coda e un argomento di esempio.

  • Iscriviti alla coda per ricevere messaggi dall'argomento.

  • Pubblicare un messaggio di prova.

Il payload del messaggio è memorizzato in Amazon S3 e il riferimento ad esso è pubblicato. Amazon SQS Extended Client viene utilizzato per ricevere il messaggio.

SDK per Java 1.x
Nota

C'è altro da fare. GitHub Trova l'esempio completo e scopri di più sulla configurazione e l'esecuzione nel Repository di esempi di codice AWS.

Per pubblicare un messaggio di grandi dimensioni, utilizza Amazon SNS Extended Client Library per Java. Il messaggio che invii fa riferimento a un oggetto Amazon S3 contenente il contenuto effettivo del messaggio.

import com.amazon.sqs.javamessaging.AmazonSQSExtendedClient; import com.amazon.sqs.javamessaging.ExtendedClientConfiguration; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.sns.AmazonSNS; import com.amazonaws.services.sns.AmazonSNSClientBuilder; import com.amazonaws.services.sns.model.CreateTopicRequest; import com.amazonaws.services.sns.model.PublishRequest; import com.amazonaws.services.sns.model.SetSubscriptionAttributesRequest; import com.amazonaws.services.sns.util.Topics; import com.amazonaws.services.sqs.AmazonSQS; import com.amazonaws.services.sqs.AmazonSQSClientBuilder; import com.amazonaws.services.sqs.model.CreateQueueRequest; import com.amazonaws.services.sqs.model.ReceiveMessageResult; import software.amazon.sns.AmazonSNSExtendedClient; import software.amazon.sns.SNSExtendedClientConfiguration; public class Example { public static void main(String[] args) { final String BUCKET_NAME = "extended-client-bucket"; final String TOPIC_NAME = "extended-client-topic"; final String QUEUE_NAME = "extended-client-queue"; final Regions region = Regions.DEFAULT_REGION; // Message threshold controls the maximum message size that will be allowed to // be published // through SNS using the extended client. Payload of messages exceeding this // value will be stored in // S3. The default value of this parameter is 256 KB which is the maximum // message size in SNS (and SQS). final int EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD = 32; // Initialize SNS, SQS and S3 clients final AmazonSNS snsClient = AmazonSNSClientBuilder.standard().withRegion(region).build(); final AmazonSQS sqsClient = AmazonSQSClientBuilder.standard().withRegion(region).build(); final AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion(region).build(); // Create bucket, topic, queue and subscription s3Client.createBucket(BUCKET_NAME); final String topicArn = snsClient.createTopic( new CreateTopicRequest().withName(TOPIC_NAME)).getTopicArn(); final String queueUrl = sqsClient.createQueue( new CreateQueueRequest().withQueueName(QUEUE_NAME)).getQueueUrl(); final String subscriptionArn = Topics.subscribeQueue( snsClient, sqsClient, topicArn, queueUrl); // To read message content stored in S3 transparently through SQS extended // client, // set the RawMessageDelivery subscription attribute to TRUE final SetSubscriptionAttributesRequest subscriptionAttributesRequest = new SetSubscriptionAttributesRequest(); subscriptionAttributesRequest.setSubscriptionArn(subscriptionArn); subscriptionAttributesRequest.setAttributeName("RawMessageDelivery"); subscriptionAttributesRequest.setAttributeValue("TRUE"); snsClient.setSubscriptionAttributes(subscriptionAttributesRequest); // Initialize SNS extended client // PayloadSizeThreshold triggers message content storage in S3 when the // threshold is exceeded // To store all messages content in S3, use AlwaysThroughS3 flag final SNSExtendedClientConfiguration snsExtendedClientConfiguration = new SNSExtendedClientConfiguration() .withPayloadSupportEnabled(s3Client, BUCKET_NAME) .withPayloadSizeThreshold(EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD); final AmazonSNSExtendedClient snsExtendedClient = new AmazonSNSExtendedClient(snsClient, snsExtendedClientConfiguration); // Publish message via SNS with storage in S3 final String message = "This message is stored in S3 as it exceeds the threshold of 32 bytes set above."; snsExtendedClient.publish(topicArn, message); // Initialize SQS extended client final ExtendedClientConfiguration sqsExtendedClientConfiguration = new ExtendedClientConfiguration() .withPayloadSupportEnabled(s3Client, BUCKET_NAME); final AmazonSQSExtendedClient sqsExtendedClient = new AmazonSQSExtendedClient(sqsClient, sqsExtendedClientConfiguration); // Read the message from the queue final ReceiveMessageResult result = sqsExtendedClient.receiveMessage(queueUrl); System.out.println("Received message is " + result.getMessages().get(0).getBody()); } }

Altri protocolli per endpoint

Sia le librerie Amazon SNS che Amazon SQS utilizzano la Payload Offload Java Common Library per AWS per archiviare e recuperare i payload dei messaggi con Amazon S3. Qualsiasi endpoint abilitato a Java (ad esempio, un endpoint HTTPS implementato in Java) può utilizzare la stessa libreria per annullare il riferimento al contenuto del messaggio.

Gli endpoint che non possono utilizzare la Payload Offloading Java Common Library per AWS possono comunque pubblicare messaggi con payload archiviati in Amazon S3. Di seguito è illustrato un esempio di un riferimento di Amazon S3 pubblicato dall'esempio di codice sopra:

[ "software.amazon.payloadoffloading.PayloadS3Pointer", { "s3BucketName": "extended-client-bucket", "s3Key": "xxxx-xxxxx-xxxxx-xxxxxx" } ]
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.