Bekerja dengan Amazon Simple Notification Service - AWS SDK for Java 2.x

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bekerja dengan Amazon Simple Notification Service

DenganAmazon Simple Notification Service, Anda dapat dengan mudah mendorong pesan notifikasi real-time dari aplikasi Anda ke pelanggan melalui beberapa saluran komunikasi. Topik ini menjelaskan bagaimana melakukan beberapa fungsi dasarAmazon SNS.

Buat topik

Topik adalah pengelompokan logis saluran komunikasi yang mendefinisikan sistem mana yang akan mengirim pesan, misalnya, mengipasi pesan AWS Lambda dan webhook HTTP. Anda mengirim pesan keAmazon SNS, lalu mereka didistribusikan ke saluran yang ditentukan dalam topik. Ini membuat pesan tersedia untuk pelanggan.

Untuk membuat topik, pertama-tama buat CreateTopicRequestobjek, dengan nama set topik menggunakan name() metode di pembuat. Kemudian, kirim objek permintaan ke Amazon SNS dengan menggunakan createTopic() metode SnsClient. Anda dapat menangkap hasil permintaan ini sebagai CreateTopicResponseobjek, seperti yang ditunjukkan dalam cuplikan kode berikut.

Impor

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;

Kode

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

Lihat contoh lengkapnya di GitHub.

Buat daftar Amazon SNS topik Anda

Untuk mengambil daftar Amazon SNS topik yang ada, buat ListTopicsRequestobjek. Kemudian, kirim objek permintaan ke Amazon SNS dengan menggunakan listTopics() metodeSnsClient. Anda dapat menangkap hasil permintaan ini sebagai ListTopicsResponseobjek.

Cuplikan kode berikut mencetak kode status HTTP permintaan dan daftar Nama Sumber Daya Amazon (ARN) untuk topik Anda. Amazon SNS

Impor

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;

Kode

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

Lihat contoh lengkapnya di GitHub.

Berlangganan titik akhir ke suatu topik

Setelah Anda membuat topik, Anda dapat mengonfigurasi saluran komunikasi mana yang akan menjadi titik akhir untuk topik tersebut. Pesan didistribusikan ke titik akhir ini setelah Amazon SNS menerimanya.

Untuk mengonfigurasi saluran komunikasi sebagai titik akhir untuk suatu topik, berlangganan titik akhir tersebut ke topik tersebut. Untuk memulai, buat SubscribeRequestobjek. Tentukan saluran komunikasi (misalnya, lambda atauemail) sebagaiprotocol(). Atur endpoint() ke lokasi keluaran yang relevan (misalnya, ARN Lambda fungsi atau alamat email), lalu atur ARN dari topik yang ingin Anda berlangganan sebagai. topicArn() Kirim objek permintaan ke Amazon SNS dengan menggunakan subscribe() metodeSnsClient. Anda dapat menangkap hasil permintaan ini sebagai SubscribeResponseobjek.

Cuplikan kode berikut menunjukkan cara berlangganan alamat email ke suatu topik.

Impor

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;

Kode

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

Lihat contoh lengkapnya di GitHub.

Publikasikan pesan ke suatu topik

Setelah Anda memiliki topik dan satu atau beberapa titik akhir yang dikonfigurasi untuk itu, Anda dapat mempublikasikan pesan ke sana. Untuk memulai, buat PublishRequestobjek. Tentukan message() yang akan dikirim, dan ARN dari topik (topicArn()) untuk mengirimkannya. Kemudian, kirim objek permintaan ke Amazon SNS dengan menggunakan publish() metodeSnsClient. Anda dapat menangkap hasil permintaan ini sebagai PublishResponseobjek.

Impor

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;

Kode

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

Lihat contoh lengkapnya di GitHub.

Berhenti berlangganan titik akhir dari suatu topik

Anda dapat menghapus saluran komunikasi yang dikonfigurasi sebagai titik akhir untuk suatu topik. Setelah melakukan itu, topik itu sendiri terus ada dan mendistribusikan pesan ke titik akhir lain yang dikonfigurasi untuk topik itu.

Untuk menghapus saluran komunikasi sebagai titik akhir topik, berhenti berlangganan titik akhir dari topik tersebut. Untuk memulai, buat UnsubscribeRequestobjek dan atur ARN dari topik yang ingin Anda berhenti berlangganan sebagai. subscriptionArn() Kemudian kirim objek permintaan ke SNS dengan menggunakan unsubscribe() metode. SnsClient Anda dapat menangkap hasil permintaan ini sebagai UnsubscribeResponseobjek.

Impor

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;

Kode

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

Lihat contoh lengkapnya di GitHub.

Hapus topik

Untuk menghapus Amazon SNS topik, pertama-tama buat DeleteTopicRequestobjek dengan ARN dari set topik sebagai topicArn() metode di pembuat. Kemudian kirim objek permintaan ke Amazon SNS dengan menggunakan deleteTopic() metodeSnsClient. Anda dapat menangkap hasil permintaan ini sebagai DeleteTopicResponseobjek, seperti yang ditunjukkan dalam cuplikan kode berikut.

Impor

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;

Kode

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

Lihat contoh lengkapnya di GitHub.

Untuk informasi selengkapnya, lihat Panduan Developer Amazon Simple Notification Service.