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 CreateTopicRequestcreateTopic()
von SnsClient
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
Listen Sie Ihre Amazon SNS Themen auf
Um eine Liste Ihrer vorhandenen Amazon SNS Themen abzurufen, erstellen Sie ein ListTopicsRequestlistTopics()
von SnsClient
verwenden. Sie können das Ergebnis dieser Anfrage als ListTopicsResponse
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
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 SubscribeRequestlambda
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 SubscribeResponse
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
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 PublishRequestmessage()
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 PublishResponse
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
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 UnsubscribeRequestsubscriptionArn()
. Senden Sie dann das Anforderungsobjekt an SNS, indem Sie die Methode unsubscribe()
von SnsClient
verwenden. Sie können das Ergebnis dieser Anfrage als UnsubscribeResponse
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
Löschen eines Themas
Um ein Amazon SNS Thema zu löschen, erstellen Sie zunächst ein DeleteTopicRequesttopicArn()
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 DeleteTopicResponse
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
Weitere Informationen finden Sie im Amazon Simple Notification Service-Entwicklerhandbuch.