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á.
Depois de criar um tópico do Amazon SNS e inscrever um endpoint nele, é possível publicar mensagens no tópico. Quando uma mensagem é publicada, o Amazon SNS tenta entregar a mensagem aos endpoints inscritos.
Para publicar mensagens nos tópicos do Amazon SNS usando o AWS Management Console
Faça login no console do Amazon SNS
. -
No painel de navegação à esquerda, selecione Tópicos.
-
Na página Topics (Tópicos), selecione um tópico e escolha Publish message (Publicar em um tópico).
O console abre a página Publish message to topic (Publicar mensagem no tópico).
-
Na seção Basic details (Detalhes básicos) faça o seguinte:
-
(Opcional) Insira o Subject (Assunto) de uma mensagem.
-
Para um tópico FIFO, insira um Message group ID (ID do grupo de mensagens). As mensagens no mesmo grupo de mensagens são entregues na ordem em que são publicadas.
-
Para um tópico FIFO, insira um Message deduplication ID (ID de desduplicação de mensagem). Este ID é opcional se você habilitou a configuração de Desduplicação de mensagens baseada em conteúdo para o tópico.
-
(Opcional) Para notificações por push para dispositivos móveis, insira um valor para Time to Live (TTL) (Vida útil (TTL)) em segundos. Esse é o tempo que um serviço de notificação push, como o Apple Push Notification Service (APNs) ou o Firebase Cloud Messaging (FCM), tem para entregar a mensagem ao endpoint.
-
-
Na seção Message body (Corpo da mensagem), siga um destes procedimentos:
-
Escolha Identical payload for all delivery protocols (Carga útil idêntica para todos os protocolos de entrega) e, em seguida, insira uma mensagem.
-
Escolha Custom payload for each delivery protocol (Carga útil personalizada para cada protocolo de entrega) e, depois, insira um objeto JSON para definir a mensagem a ser enviada a cada protocolo de entrega.
Para obter mais informações, consulte Publicar notificações do Amazon SNS com cargas úteis específicas da plataforma.
-
-
Na seção Message attributes (Atributos da mensagem), adicione todos os atributos que deseja que o Amazon SNS corresponda ao atributo de assinatura
FilterPolicy
para decidir se o endpoint inscrito está interessado na mensagem publicada.-
Em Type Tipo, escolha um tipo de atributo, como String.Array.
nota
Para o tipo de atributo String.Array, coloque a matriz entre colchetes (
[]
). Dentro da matriz, coloque valores de strings entre aspas duplas. As aspas não são necessárias para números nem para as palavras-chavetrue
,false
enull
. -
Insira um atributo Name (Nome), por exemplo,
customer_interests
. -
Insira um atributo Value (Valor), por exemplo,
["soccer", "rugby", "hockey"]
.
Se o tipo do atributo for String, String.Array ou Number, o Amazon SNS avaliará o atributo de mensagem em relação à política de filtro de uma assinatura (se existir) antes de enviar a mensagem à assinatura, considerando que o escopo da política de filtro não está explicitamente definido como
MessageBody
.Para obter mais informações, consulte Atributos de mensagem do Amazon SNS.
-
-
Selecione Publish message (Publicar mensagem).
A mensagem é publicada no tópico e o console abre a página Details (Detalhes).
Para publicar uma mensagem em um tópico usando um AWS SDK
Para usar um AWS SDK, você deve configurá-lo com suas credenciais. Para obter mais informações, consulte Os arquivos compartilhados de configuração e credenciais no Guia de referência de ferramentas AWS SDKs e ferramentas.
Os exemplos de código a seguir mostram como usar o Publish
.
- SDK for .NET
-
nota
Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no Repositório de exemplos de código da AWS
. Publique uma mensagem em um tópico.
using System; using System.Threading.Tasks; using Amazon.SimpleNotificationService; using Amazon.SimpleNotificationService.Model; /// <summary> /// This example publishes a message to an Amazon Simple Notification /// Service (Amazon SNS) topic. /// </summary> public class PublishToSNSTopic { public static async Task Main() { string topicArn = "arn:aws:sns:us-east-2:000000000000:ExampleSNSTopic"; string messageText = "This is an example message to publish to the ExampleSNSTopic."; IAmazonSimpleNotificationService client = new AmazonSimpleNotificationServiceClient(); await PublishToTopicAsync(client, topicArn, messageText); } /// <summary> /// Publishes a message to an Amazon SNS topic. /// </summary> /// <param name="client">The initialized client object used to publish /// to the Amazon SNS topic.</param> /// <param name="topicArn">The ARN of the topic.</param> /// <param name="messageText">The text of the message.</param> public static async Task PublishToTopicAsync( IAmazonSimpleNotificationService client, string topicArn, string messageText) { var request = new PublishRequest { TopicArn = topicArn, Message = messageText, }; var response = await client.PublishAsync(request); Console.WriteLine($"Successfully published message ID: {response.MessageId}"); } }
Publique uma mensagem em um tópico com opções de grupo, duplicação e atributo.
/// <summary> /// Publish messages using user settings. /// </summary> /// <returns>Async task.</returns> public static async Task PublishMessages() { Console.WriteLine("Now we can publish messages."); var keepSendingMessages = true; string? deduplicationId = null; string? toneAttribute = null; while (keepSendingMessages) { Console.WriteLine(); var message = GetUserResponse("Enter a message to publish.", "This is a sample message"); if (_useFifoTopic) { Console.WriteLine("Because you are using a FIFO topic, you must set a message group ID." + "\r\nAll messages within the same group will be received in the order " + "they were published."); Console.WriteLine(); var messageGroupId = GetUserResponse("Enter a message group ID for this message:", "1"); if (!_useContentBasedDeduplication) { Console.WriteLine("Because you are not using content-based deduplication, " + "you must enter a deduplication ID."); Console.WriteLine("Enter a deduplication ID for this message."); deduplicationId = GetUserResponse("Enter a deduplication ID for this message.", "1"); } if (GetYesNoResponse("Add an attribute to this message?")) { Console.WriteLine("Enter a number for an attribute."); for (int i = 0; i < _tones.Length; i++) { Console.WriteLine($"\t{i + 1}. {_tones[i]}"); } var selection = GetUserResponse("", "1"); int.TryParse(selection, out var selectionNumber); if (selectionNumber > 0 && selectionNumber < _tones.Length) { toneAttribute = _tones[selectionNumber - 1]; } } var messageID = await SnsWrapper.PublishToTopicWithAttribute( _topicArn, message, "tone", toneAttribute, deduplicationId, messageGroupId); Console.WriteLine($"Message published with id {messageID}."); } keepSendingMessages = GetYesNoResponse("Send another message?", false); } }
Aplique as seleções do usuário à ação de publicação.
/// <summary> /// Publish a message to a topic with an attribute and optional deduplication and group IDs. /// </summary> /// <param name="topicArn">The ARN of the topic.</param> /// <param name="message">The message to publish.</param> /// <param name="attributeName">The optional attribute for the message.</param> /// <param name="attributeValue">The optional attribute value for the message.</param> /// <param name="deduplicationId">The optional deduplication ID for the message.</param> /// <param name="groupId">The optional group ID for the message.</param> /// <returns>The ID of the message published.</returns> public async Task<string> PublishToTopicWithAttribute( string topicArn, string message, string? attributeName = null, string? attributeValue = null, string? deduplicationId = null, string? groupId = null) { var publishRequest = new PublishRequest() { TopicArn = topicArn, Message = message, MessageDeduplicationId = deduplicationId, MessageGroupId = groupId }; if (attributeValue != null) { // Add the string attribute if it exists. publishRequest.MessageAttributes = new Dictionary<string, MessageAttributeValue> { { attributeName!, new MessageAttributeValue() { StringValue = attributeValue, DataType = "String"} } }; } var publishResponse = await _amazonSNSClient.PublishAsync(publishRequest); return publishResponse.MessageId; }
-
Para obter detalhes da API, consulte Publish na Referência da API AWS SDK for .NET .
-