Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Travailler avec Amazon Simple Notification Service
Avec Amazon Simple Notification Service, vous pouvez facilement transmettre des messages de notification en temps réel à partir de vos applications vers les abonnés via plusieurs canaux de communication. Cette rubrique décrit comment exécuter certaines des fonctions de base deAmazon SNS.
Créer une rubrique
Une rubrique est un regroupement logique de canaux de communication qui définit les systèmes auxquels envoyer un message, par exemple, en diffusant un message vers AWS Lambda et un webhook HTTP. Vous envoyez à Amazon SNS des messages qui seront distribués via les canaux définis dans la rubrique. Les messages sont alors disponibles pour les abonnés.
Pour créer un sujet, créez d'abord un CreateTopicRequestname()
méthode du générateur. Ensuite, envoyez l'objet de la demande à Amazon SNS en utilisant la méthode createTopic()
du SnsClient
Importations
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;
Code
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 ""; }
Consultez l'exemple complet
Listez vos Amazon SNS sujets
Pour récupérer la liste de vos Amazon SNS sujets existants, créez un ListTopicsRequestlistTopics()
du SnsClient
. Vous pouvez capturer le résultat de cette demande sous forme d'ListTopicsResponse
L'extrait de code suivant imprime le code d'état HTTP de la demande et une liste d'ARN (Amazon Resource Name) pour vos rubriques Amazon SNS.
Importations
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;
Code
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); } }
Consultez l'exemple complet
Abonner un point de terminaison à une rubrique
Après avoir créé une rubrique, vous pouvez configurer les canaux de communication qui deviendront des points de terminaison pour cette rubrique. Les messages sont distribués à ces points de terminaison après leur réception par Amazon SNS.
Pour configurer un canal de communication en tant que point de terminaison pour une rubrique, abonnez ce point de terminaison à la rubrique. Pour commencer, créez un SubscribeRequestlambda
ouemail
) en tant queprotocol()
. Définissez l'emplacement endpoint()
de sortie approprié (par exemple, l'ARN d'une Lambda fonction ou une adresse e-mail), puis définissez l'ARN du sujet auquel vous souhaitez vous abonner en tant quetopicArn()
. Envoyez l'objet de demande à Amazon SNS en utilisant la subscribe()
méthode duSnsClient
. Vous pouvez capturer le résultat de cette demande sous forme d'SubscribeResponse
L'extrait de code suivant montre comment abonner une adresse e-mail à une rubrique.
Importations
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;
Code
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); } }
Consultez l'exemple complet
Publier un message dans une rubrique
Après avoir configuré une rubrique et un ou plusieurs points de terminaison, vous pouvez y publier un message. Pour commencer, créez un PublishRequestmessage()
à envoyer et l'ARN de la rubrique (topicArn()
) à laquelle l'envoyer. Ensuite, envoyez l'objet de la demande à Amazon SNS en utilisant la méthode publish()
du SnsClient
. Vous pouvez capturer le résultat de cette demande sous forme d'PublishResponse
Importations
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;
Code
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); } }
Consultez l'exemple complet
Désabonner un point de terminaison à une rubrique
Vous pouvez supprimer les canaux de communication configurés en tant que points de terminaison pour une rubrique. Après cela, la rubrique elle-même continue d'exister et de diffuser des messages à tous les autres points de terminaison configurés pour cette rubrique.
Pour supprimer un canal de communication en tant que point de terminaison pour une rubrique, annulez l’abonnement du point de terminaison à la rubrique. Pour commencer, créez un UnsubscribeRequestsubscriptionArn()
. Ensuite, envoyez l'objet de demande à SNS en utilisant la méthode unsubscribe()
du SnsClient
. Vous pouvez capturer le résultat de cette demande sous forme d'UnsubscribeResponse
Importations
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;
Code
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); } }
Consultez l'exemple complet
Supprimer une rubrique
Pour supprimer un Amazon SNS sujet, créez d'abord un DeleteTopicRequesttopicArn()
méthode dans le générateur. Ensuite, envoyez l'objet de la demande à Amazon SNS en utilisant la méthode deleteTopic()
du SnsClient
. Vous pouvez capturer le résultat de cette demande sous forme d'DeleteTopicResponse
Importations
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;
Code
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); } }
Consultez l'exemple complet
Pour plus d’informations, consultez le Guide du développeur Amazon Simple Notification Service.