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 CreateTopicRequestname()
metodo del generatore. Quindi, invia l'oggetto richiesto a Amazon SNS utilizzando il metodo createTopic()
di SnsClient
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
Elenca i tuoi Amazon SNS argomenti
Per recuperare un elenco dei tuoi Amazon SNS argomenti esistenti, crea un ListTopicsRequestlistTopics()
di SnsClient
. Puoi acquisire il risultato di questa richiesta come ListTopicsResponse
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
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 SubscribeRequestlambda
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 SubscribeResponse
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
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 PublishRequestmessage()
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 PublishResponse
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
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 UnsubscribeRequestsubscriptionArn()
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
Eliminazione di un argomento
Per eliminare un Amazon SNS argomento, crea prima un DeleteTopicRequesttopicArn()
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 DeleteTopicResponse
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
Per ulteriori informazioni, consulta la Guida per gli sviluppatori di Amazon Simple Notification Service.