Travailler avec Amazon Simple Notification Service - AWS SDK for Java 2.x

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 CreateTopicRequestobjet, avec le nom du sujet défini à l'aide de la name() méthode du générateur. Ensuite, envoyez l'objet de la demande à Amazon SNS en utilisant la méthode createTopic() du SnsClient. Vous pouvez capturer le résultat de cette demande sous forme d'CreateTopicResponseobjet, comme illustré dans l'extrait de code suivant.

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 sur GitHub.

Listez vos Amazon SNS sujets

Pour récupérer la liste de vos Amazon SNS sujets existants, créez un ListTopicsRequestobjet. Ensuite, envoyez l'objet de la demande à Amazon SNS en utilisant la méthode listTopics() du SnsClient. Vous pouvez capturer le résultat de cette demande sous forme d'ListTopicsResponseobjet.

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 sur GitHub.

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 SubscribeRequestobjet. Spécifiez le canal de communication (par exemple, lambda 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'SubscribeResponseobjet.

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 sur GitHub.

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 PublishRequestobjet. Spécifiez le message() à 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'PublishResponseobjet.

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 sur GitHub.

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 UnsubscribeRequestobjet et définissez l'ARN du sujet dont vous souhaitez vous désabonner comme étant lesubscriptionArn(). 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'UnsubscribeResponseobjet.

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 sur GitHub.

Supprimer une rubrique

Pour supprimer un Amazon SNS sujet, créez d'abord un DeleteTopicRequestobjet avec l'ARN du sujet défini comme topicArn() 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'DeleteTopicResponseobjet, comme illustré dans l'extrait de code suivant.

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 sur GitHub.

Pour plus d’informations, consultez le Guide du développeur Amazon Simple Notification Service.