As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Trabalhar com Amazon Simple Notification Service
Com o Amazon Simple Notification Service, é possível enviar facilmente mensagens de notificação em tempo real dos aplicativos aos assinantes em vários canais de comunicação. Este tópico descreve como executar algumas das funções básicas do Amazon SNS.
Criar um tópico
Um tópico é um agrupamento lógico de canais de comunicação que define para quais sistemas enviar uma mensagem, por exemplo, espalhando uma mensagem do AWS Lambda e um webhook HTTP. Você envia mensagens para o Amazon SNS, e elas são distribuídas para os canais definidos no tópico. Isso disponibiliza as mensagens para os assinantes.
Para criar um tópico, primeiro compile um objeto CreateTopicRequestname()
no compilador. Envie o objeto de solicitação para o Amazon SNS usando o método createTopic()
do SnsClient
Importações
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;
Código
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 ""; }
Veja o exemplo completo
Listar seus tópicos do Amazon SNS
Para recuperar uma lista dos tópicos existentes do Amazon SNS, compile um objeto ListTopicsRequestlistTopics()
do SnsClient
. É possível capturar o resultado dessa solicitação como um objeto ListTopicsResponse
O trecho de código a seguir imprime o código de status HTTP da solicitação e uma lista de nomes de recurso da Amazon (ARNs) para os tópicos do Amazon SNS.
Importações
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;
Código
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); } }
Veja o exemplo completo
Inscrever um endpoint em um tópico
Depois de criar um tópico, é possível configurar quais canais de comunicação serão endpoints para esse tópico. As mensagens são distribuídas para esses endpoints após o Amazon SNS recebê-las.
Para configurar um canal de comunicação como um endpoint para um tópico, inscreva esse endpoint no tópico. Para iniciar, compile um objeto SubscribeRequestlambda
ou email
) como protocol()
. Defina o endpoint()
como o local de saída relevante (por exemplo, o ARN de uma função do Lambda ou um endereço de e-mail) e defina o ARN do tópico ai qual você deseja se inscrever como topicArn()
. Envie o objeto de solicitação para o Amazon SNS usando o método subscribe()
do SnsClient
. É possível capturar o resultado dessa solicitação como um objeto SubscribeResponse
O trecho de código a seguir mostra como inscrever um endereço de e-mail em um tópico.
Importações
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;
Código
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); } }
Veja o exemplo completo
Publicar uma mensagem em um tópico
Depois de ter um tópico e um ou mais endpoints configurados para ele, será possível publicar uma mensagem nele. Para iniciar, compile um objeto PublishRequestmessage()
a ser enviada e o ARN do tópico (topicArn()
) para o qual enviá-la. Envie o objeto de solicitação para o Amazon SNS usando o método publish()
do SnsClient
. É possível capturar o resultado dessa solicitação como um objeto PublishResponse
Importações
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;
Código
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); } }
Veja o exemplo completo
Cancelar a inscrição de um endpoint de um tópico
Você pode remover os canais de comunicação configurados como endpoints de um tópico. Depois de fazer isso, o tópico em si continua a existir e distribuir mensagens para quaisquer endpoints finais configurados para esse tópico.
Para remover um canal de comunicação como um endpoint de um tópico, cancele a inscrição desse endpoint do tópico. Para começar, compile um objeto UnsubscribeRequestsubscriptionArn()
. Envie o objeto de solicitação para o SNS usando o método unsubscribe()
do SnsClient
. É possível capturar o resultado dessa solicitação como um objeto UnsubscribeResponse
Importações
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;
Código
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); } }
Veja o exemplo completo
Excluir um tópico
Para excluir um tópico do Amazon SNS, primeiro compile um objeto DeleteTopicRequesttopicArn()
no compilador. Envie o objeto de solicitação para o Amazon SNS usando o método deleteTopic()
do SnsClient
. É possível capturar o resultado dessa solicitação como um objeto DeleteTopicResponse
Importações
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;
Código
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); } }
Veja o exemplo completo
Para obter mais informações, consulte o Guia do desenvolvedor do Amazon Simple Notification Service.