Arbeiten mit Amazon Simple Notification Service - AWS SDK for Java 2.x

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Arbeiten mit Amazon Simple Notification Service

Mit Amazon Simple Notification Service können Sie ganz einfach Echtzeitbenachrichtigungen von Ihren Anwendungen über mehrere Kommunikationskanäle an Abonnenten senden. In diesem Thema wird beschrieben, wie Sie einige der Grundfunktionen von ausführenAmazon SNS.

Erstellen eines Themas

Ein Thema ist eine logische Gruppierung von Kommunikationskanälen, die definiert, an welche Systeme eine Nachricht gesendet werden soll, z. B. das Ausfächern einer Nachricht an AWS Lambda und einen HTTP-Webhook. Sie senden Nachrichten an Amazon SNS und diese werden dann an die Kanäle verteilt, die im Thema definiert sind. Dadurch werden die Nachrichten für Abonnenten zur Verfügung gestellt.

Um ein Thema zu erstellen, erstellen Sie zunächst mithilfe der name() Methode im Builder ein CreateTopicRequestObjekt mit dem Namen des Themas. Senden Sie dann das Anforderungsobjekt an Amazon SNS, indem Sie die Methode createTopic() von SnsClient verwenden. Sie können das Ergebnis dieser Anfrage als CreateTopicResponseObjekt erfassen, wie im folgenden Codeausschnitt gezeigt.

Importe

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 ""; }

Das vollständige Beispiel finden Sie unter. GitHub

Listen Sie Ihre Amazon SNS Themen auf

Um eine Liste Ihrer vorhandenen Amazon SNS Themen abzurufen, erstellen Sie ein ListTopicsRequestObjekt. Senden Sie dann das Anforderungsobjekt an Amazon SNS, indem Sie die Methode listTopics() von SnsClient verwenden. Sie können das Ergebnis dieser Anfrage als ListTopicsResponseObjekt erfassen.

Der folgende Codeausschnitt druckt den HTTP-Statuscode der Anfrage und eine Liste der Amazon Resource Names (ARNs) für Ihre Amazon SNS-Themen aus.

Importe

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); } }

Das vollständige Beispiel finden Sie unter GitHub.

Abonnieren eines Endpunkts für ein Thema

Nachdem Sie ein Thema erstellt haben, können Sie konfigurieren, welche Kommunikationskanäle Endpunkte für dieses Thema sein sollen. Nachrichten werden an diese Endpunkte verteilt, nachdem Amazon SNS diese empfangen hat.

Wenn Sie einen Kommunikationskanal als Endpunkt für ein Thema konfigurieren möchten, abonnieren Sie diesen Endpunkt für das Thema. Erstellen Sie zunächst ein SubscribeRequestObjekt. Geben Sie den Kommunikationskanal (z. B. lambda oderemail) als anprotocol(). Stellen Sie das endpoint() auf den entsprechenden Ausgabespeicherort ein (z. B. den ARN einer Lambda Funktion oder eine E-Mail-Adresse), und legen Sie dann den ARN des Themas fest, das Sie abonnieren möchten, alstopicArn(). Senden Sie das Anforderungsobjekt mit der subscribe() Methode vonSnsClient. Amazon SNS Sie können das Ergebnis dieser Anfrage als SubscribeResponseObjekt erfassen.

Im folgenden Codeausschnitt wird dargestellt, wie Sie eine E-Mail-Adresse für ein Thema abonnieren.

Importe

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); } }

Das vollständige Beispiel finden Sie unter GitHub.

Veröffentlichen einer Nachricht für ein Thema

Nachdem Sie ein Thema und einen oder mehrere Endpunkte dafür konfiguriert haben, können Sie eine Nachricht dafür veröffentlichen. Erstellen Sie zunächst ein PublishRequestObjekt. Geben Sie zum Senden message() und den ARN des Themas (topicArn()) an, an das es gesendet werden soll. Senden Sie dann das Anforderungsobjekt an Amazon SNS, indem Sie die Methode publish() von SnsClient verwenden. Sie können das Ergebnis dieser Anfrage als PublishResponseObjekt erfassen.

Importe

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); } }

Das vollständige Beispiel finden Sie unter GitHub.

Abmelden eines Endpunkts von einem Thema

Sie können die als Endpunkte für ein Thema konfigurierten Kommunikationskanäle entfernen. Danach ist das Thema selbst weiterhin vorhanden und verteilt Nachrichten an alle anderen Endpunkte, die für dieses Thema konfiguriert sind.

Wenn Sie einen Kommunikationskanal als Endpunkt für ein Thema entfernen möchten, melden Sie diesen Endpunkt für das Thema ab. Erstellen Sie zunächst ein UnsubscribeRequestObjekt und legen Sie den ARN des Themas, von dem Sie sich abmelden möchten, alssubscriptionArn(). Senden Sie dann das Anforderungsobjekt an SNS, indem Sie die Methode unsubscribe() von SnsClient verwenden. Sie können das Ergebnis dieser Anfrage als UnsubscribeResponseObjekt erfassen.

Importe

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); } }

Das vollständige Beispiel finden Sie unter GitHub.

Löschen eines Themas

Um ein Amazon SNS Thema zu löschen, erstellen Sie zunächst ein DeleteTopicRequestObjekt mit dem ARN des Themas, der als topicArn() Methode im Builder festgelegt ist. Senden Sie dann das Anforderungsobjekt an Amazon SNS, indem Sie die Methode deleteTopic() von SnsClient verwenden. Sie können das Ergebnis dieser Anfrage als DeleteTopicResponseObjekt erfassen, wie im folgenden Codeausschnitt gezeigt.

Importe

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); } }

Das vollständige Beispiel finden Sie unter. GitHub

Weitere Informationen finden Sie im Amazon Simple Notification Service-Entwicklerhandbuch.