Utilizzo delle Amazon Simple Notification Service - AWS SDK for Java 2.x

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à.

Utilizzo delle Amazon Simple Notification Service

Con Amazon Simple Notification Service, puoi inviare facilmente messaggi di notifica in tempo reale dalle applicazioni agli abbonati su più canali di comunicazione. In questo argomento viene descritto come eseguire alcune delle funzioni di base diAmazon SNS.

Creazione di un argomento

Un argomento è un raggruppamento logico di canali di comunicazione che definisce i sistemi a cui inviare un messaggio, ad esempio, il fanning out di un messaggio AWS Lambda e un webhook HTTP. Prima invii i messaggi a Amazon SNS, poi tali messaggi vengono distribuiti ai canali definiti nell'argomento. Questo rende i messaggi disponibili per gli abbonati.

Per creare un argomento, crea prima un CreateTopicRequestoggetto, con il nome dell'argomento impostato utilizzando il name() metodo del generatore. Quindi, invia l'oggetto richiesto a Amazon SNS utilizzando il metodo createTopic() di SnsClient. È possibile acquisire il risultato di questa richiesta come CreateTopicResponseoggetto, come dimostrato nel seguente frammento di codice.

Importazioni

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.CreateTopicRequest; import software.amazon.awssdk.services.sns.model.CreateTopicResponse; import software.amazon.awssdk.services.sns.model.SnsException;

Codice

public static String createSNSTopic(SnsClient snsClient, String topicName ) { CreateTopicResponse result = null; try { CreateTopicRequest request = CreateTopicRequest.builder() .name(topicName) .build(); result = snsClient.createTopic(request); return result.topicArn(); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return ""; }

Vedi l'esempio completo su. GitHub

Elenca i tuoi Amazon SNS argomenti

Per recuperare un elenco dei tuoi Amazon SNS argomenti esistenti, crea un ListTopicsRequestoggetto. Quindi, invia l'oggetto richiesto a Amazon SNS utilizzando il metodo listTopics() di SnsClient. Puoi acquisire il risultato di questa richiesta come ListTopicsResponseoggetto.

Il frammento di codice seguente stampa il codice di stato HTTP della richiesta e un elenco di Amazon Resource Name (ARN) per i tuoi argomenti Amazon SNS.

Importazioni

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.ListTopicsRequest; import software.amazon.awssdk.services.sns.model.ListTopicsResponse; import software.amazon.awssdk.services.sns.model.SnsException;

Codice

public static void listSNSTopics(SnsClient snsClient) { try { ListTopicsRequest request = ListTopicsRequest.builder() .build(); ListTopicsResponse result = snsClient.listTopics(request); System.out.println("Status was " + result.sdkHttpResponse().statusCode() + "\n\nTopics\n\n" + result.topics()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Vedi l'esempio completo su GitHub.

Sottoscrizione di un endpoint a un argomento

Dopo aver creato un argomento, puoi configurare quali canali di comunicazione saranno endpoint per tale argomento. I messaggi vengono distribuiti a questi endpoint dopo essere stati ricevuti da Amazon SNS.

Per configurare un canale di comunicazione come endpoint per un argomento, sottoscrivi tale endpoint all'argomento. Per iniziare, costruisci un SubscribeRequestoggetto. Specificate il canale di comunicazione (ad esempio, lambda oemail) comeprotocol(). Imposta la endpoint() posizione di output pertinente (ad esempio, l'ARN di una Lambda funzione o un indirizzo e-mail), quindi imposta l'ARN dell'argomento a cui desideri iscriverti come. topicArn() Inviate l'oggetto della richiesta a Amazon SNS utilizzando il subscribe() metodo di. SnsClient È possibile acquisire il risultato di questa richiesta come SubscribeResponseoggetto.

Il frammento di codice seguente mostra come sottoscrivere un indirizzo e-mail a un argomento.

Importazioni

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import software.amazon.awssdk.services.sns.model.SubscribeRequest; import software.amazon.awssdk.services.sns.model.SubscribeResponse;

Codice

public static void subEmail(SnsClient snsClient, String topicArn, String email) { try { SubscribeRequest request = SubscribeRequest.builder() .protocol("email") .endpoint(email) .returnSubscriptionArn(true) .topicArn(topicArn) .build(); SubscribeResponse result = snsClient.subscribe(request); System.out.println("Subscription ARN: " + result.subscriptionArn() + "\n\n Status is " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Vedi l'esempio completo su GitHub.

Pubblicazione di un messaggio in un argomento

Dopo avere configurato un argomento e uno o più endpoint, puoi pubblicare un messaggio. Per iniziare, costruisci un PublishRequestoggetto. Specifica message() per l'invio e l'ARN dell'argomento (topicArn()) a cui inviarlo. Quindi, invia l'oggetto richiesto a Amazon SNS utilizzando il metodo publish() di SnsClient. Puoi acquisire il risultato di questa richiesta come PublishResponseoggetto.

Importazioni

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.PublishRequest; import software.amazon.awssdk.services.sns.model.PublishResponse; import software.amazon.awssdk.services.sns.model.SnsException;

Codice

public static void pubTopic(SnsClient snsClient, String message, String topicArn) { try { PublishRequest request = PublishRequest.builder() .message(message) .topicArn(topicArn) .build(); PublishResponse result = snsClient.publish(request); System.out.println(result.messageId() + " Message sent. Status is " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Vedi l'esempio completo su GitHub.

Annullamento della sottoscrizione di un endpoint da un argomento

Puoi rimuovere i canali di comunicazione configurati come endpoint per un argomento. Dopo aver eseguito questa operazione, l'argomento stesso continua a esistere e distribuire i messaggi a qualsiasi altro endpoint configurato per tale argomento.

Per rimuovere un canale di comunicazione come endpoint per un argomento, annulla la sottoscrizione dell'endpoint dall'argomento. Per iniziare, crea un UnsubscribeRequestoggetto e imposta l'ARN dell'argomento a cui desideri annullare l'iscrizione come. subscriptionArn() Quindi invia l'oggetto della richiesta a SNS utilizzando il metodo unsubscribe() di SnsClient. Puoi acquisire il risultato di questa richiesta come oggetto UnsubscribeResponse.

Importazioni

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.SnsException; import software.amazon.awssdk.services.sns.model.UnsubscribeRequest; import software.amazon.awssdk.services.sns.model.UnsubscribeResponse;

Codice

public static void unSub(SnsClient snsClient, String subscriptionArn) { try { UnsubscribeRequest request = UnsubscribeRequest.builder() .subscriptionArn(subscriptionArn) .build(); UnsubscribeResponse result = snsClient.unsubscribe(request); System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode() + "\n\nSubscription was removed for " + request.subscriptionArn()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Vedi l'esempio completo su GitHub.

Eliminazione di un argomento

Per eliminare un Amazon SNS argomento, crea prima un DeleteTopicRequestoggetto con l'ARN dell'argomento impostato come topicArn() metodo nel generatore. Quindi, invia l'oggetto della richiesta a Amazon SNS utilizzando il metodo deleteTopic() di SnsClient. È possibile acquisire il risultato di questa richiesta come DeleteTopicResponseoggetto, come dimostrato nel seguente frammento di codice.

Importazioni

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sns.model.DeleteTopicRequest; import software.amazon.awssdk.services.sns.model.DeleteTopicResponse; import software.amazon.awssdk.services.sns.model.SnsException;

Codice

public static void deleteSNSTopic(SnsClient snsClient, String topicArn ) { try { DeleteTopicRequest request = DeleteTopicRequest.builder() .topicArn(topicArn) .build(); DeleteTopicResponse result = snsClient.deleteTopic(request); System.out.println("\n\nStatus was " + result.sdkHttpResponse().statusCode()); } catch (SnsException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

Vedi l'esempio completo su. GitHub

Per ulteriori informazioni, consulta la Guida per gli sviluppatori di Amazon Simple Notification Service.