Reprodução de mensagens do Amazon SNS para assinantes de tópicos FIFO - Amazon Simple Notification Service

Reprodução de mensagens do Amazon SNS para assinantes de tópicos FIFO

A reprodução do Amazon SNS permite que os assinantes do tópico recuperem mensagens arquivadas do armazenamento de dados do tópico e as entreguem novamente para um endpoint inscrito.

  • As mensagens podem ser reproduzidas novamente assim que a assinatura for criada.

  • Uma mensagem reproduzida novamente mantém o mesmo conteúdo, MessageId e Timestamp que a original.

  • A mensagem inclui um atributo Replayed para indicar que é uma mensagem repetida.

  • Para reproduzir novamente apenas mensagens específicas, aplique uma política de filtro à assinatura.

Para obter mais informações sobre como filtrar mensagens, consulte Filtrar mensagens reproduzidas.

Criar uma política de reprodução de mensagens com o Console de gerenciamento da AWS

Use essa opção para criar uma política de reprodução de mensagens com o Console de gerenciamento da AWS.

  1. Faça login no console do Amazon SNS.

  2. Selecione uma assinatura de tópico ou crie uma. Para saber mais sobre como criar assinaturas, consulte Criação de uma assinatura em um tópico do Amazon SNS.

  3. Para iniciar a reprodução de mensagens, acesse o menu suspenso Reproduzir e selecione Iniciar reprodução.

  4. No modal Prazo de repetição, selecione:

    1. Escolher data e a hora de início da reprodução: selecione a data (formato AAAA/MM/DD) e a hora (formato hh:mm:ss de 24 horas) em que você deseja começar a reproduzir as mensagens arquivadas. A hora de início deve ser posterior ao início da hora de arquivamento aproximada.

    2. (Opcional) Escolher data e a hora de início da reprodução: selecione a data (formato AAAA/MM/DD) e a hora (formato hh:mm:ss de 24 horas) em que você deseja parar de reproduzir as mensagens arquivadas.

    3. Selecione Iniciar repetição.

  5. (Opcional) Para interromper a reprodução de mensagens, acesse a página Detalhes da assinatura e selecione Interromper repetição no menu suspenso Reproduzir.

  6. (Opcional) Para monitorar as métricas de reprodução de mensagens nesse fluxo de trabalho usando o CloudWatch, consulte Monitorar métricas de reprodução de mensagens com o Amazon CloudWatch.

Como visualizar e editar uma política de reprodução de mensagens

É possível realizar as seguintes ações na página Detalhes da assinatura:

  • Para visualizar o status de reprodução de mensagens, o campo Status de reprodução exibe os seguintes valores:

    • Concluído: a reprodução reenviou com êxito todas as mensagens e agora está enviando mensagens recém-publicadas.

    • Em andamento: no momento, as mensagens selecionadas estão sendo reproduzidas.

    • Com falha: não foi possível concluir a reprodução.

    • Pendente: o estado padrão durante o início da reprodução.

  • (Opcional) Para modificar a política de reprodução de mensagens, acesse a página Detalhes da assinatura e selecione Iniciar reprodução no menu suspenso Reproduzir. Ao iniciar uma reprodução, a reprodução existente será substituída.

Adicionar uma política de reprodução à assinatura com a API

Para reproduzir mensagens arquivadas, use o atributo ReplayPolicy. A ReplayPolicy pode ser usada com as ações Subscribe e SetSubscriptionAttributes da API. Essa política tem os seguintes valores:

  • StartingPoint (obrigatório): sinaliza de onde começar a reproduzir as mensagens.

  • EndingPoint (opcional): sinaliza quando parar de reproduzir mensagens. Se EndingPoint for omitido, a reprodução continuará até a hora atual.

  • PointType (obrigatório): define o tipo dos pontos de início e término. No momento, o valor compatível para PointType é Timestamp.

Por exemplo, para se recuperar de uma falha subsequente e reenviar todas as mensagens por um período de duas horas em 1.º de outubro de 2023, use a ação SetSubscriptionAttributes da API para definir uma ReplayPolicy da seguinte maneira:

{ "PointType":"Timestamp", "StartingPoint":"2023-10-01T10:00:00.000Z", "EndingPoint":"2023-10-01T12:00:00.000Z" }

Para reproduzir todas as mensagens enviadas ao tópico a partir de 1.º de outubro de 2023 e continuar recebendo todas as mensagens recém-publicadas no tópico, use a ação SetSubscriptionAttributes da API para definir uma ReplayPolicy na assinatura da seguinte maneira:

{ "PointType":"Timestamp", "StartingPoint":"2023-10-01T00:00:00.000Z" }

Para verificar se uma mensagem foi reproduzida, o atributo booliano Replayed é adicionado a cada mensagem reproduzida.

Adicionar uma política de reprodução à assinatura com o SDK

Para usar um AWS SDK, configure-o com suas credenciais. Para obter mais informações, consulte Arquivos config e credentials compartilhados no Guia de referência de AWS SDKs e ferramentas.

O exemplo de código a seguir mostra como definir a ReplayPolicy em uma assinatura para reenviar mensagens do arquivo do tópico FIFO do Amazon SNS por um período de duas horas em 1.º de outubro de 2023.

// Specify the ARN of the Amazon SNS subscription to initiate the ReplayPolicy on. String subscriptionArn = "arn:aws:sns:us-east-2:123456789012:MyArchiveTopic.fifo:1d2a3e9d-7f2f-447c-88ae-03f1c68294da"; // Set the ReplayPolicy to replay messages from the topic's archive // for a 2 hour time period on October 1st 2023 between 10am and 12pm UTC. String replayPolicy = "{\"PointType\":\"Timestamp\",\"StartingPoint\":\"2023-10-01T10:00:00.000Z\",\"EndingPoint\":\"2023-10-01T12:00:00.000Z\"}"; // Set the ArchivePolicy for the Amazon SNS topic SetSubscriptionAttributesRequest request = new SetSubscriptionAttributesRequest() .withSubscriptionArn(subscriptionArn) .withAttributeName("ReplayPolicy") .withAttributeValue(replayPolicy); sns.setSubscriptionAttributes(request);

Noções básicas sobre o EndingPoint

Quando você aplica uma ReplayPolicy para uma assinatura do Amazon SNS, o valor EndingPoint é opcional. Se não EndingPoint for fornecido, a repetição começará do StartingPointespecificado e continuará até atingir a hora atual, incluindo o processamento de qualquer mensagem recém-publicada. Depois de concluída, a assinatura funcionará como uma assinatura regular, recebendo novas mensagens à medida que forem publicadas.

Se um EndingPoint for especificado, o serviço reproduzirá as mensagens do StartingPoint até o EndingPoint e depois parará. Essa ação efetivamente pausa a assinatura. Enquanto a assinatura estiver pausada, as mensagens recém-publicadas não serão entregues ao endpoint inscrito.

Para retomar a entrega de mensagens, aplique uma nova ReplayPolicy sem fornecer um EndingPoint e defina o StartingPoint para o momento desejado a partir do qual continuar recebendo mensagens. Por exemplo, para retomar uma assinatura após o término de uma repetição anterior, defina o novo StartingPoint ao EndingPoint fornecido anteriormente.

Filtrar mensagens reproduzidas

A filtragem de mensagens do Amazon SNS permite que você controle as mensagens reproduzidas que o Amazon SNS reproduz no endpoint do assinante. Quando a filtragem e o arquivamento de mensagens estão habilitados, o Amazon SNS primeiro recupera a mensagem do datastore do tópico e, depois, aplica a mensagem à FilterPolicy da assinatura. A mensagem é enviada ao endpoint inscrito quando há uma correspondência. Caso contrário, ela é filtrada. Para obter mais informações, consulte Políticas de filtro de assinatura do Amazon SNS.

Monitorar métricas de reprodução de mensagens com o Amazon CloudWatch

É possível monitorar mensagens reproduzidas com o Amazon CloudWatch usando as métricas a seguir. Para receber notificação sobre anomalias nas workloads e ajudar a evitar impactos, é possível configurar os alarmes do Amazon CloudWatch com base nessas métricas. Consulte mais detalhes em Registrar em log e monitorar no Amazon SNS.

Métrica Descrição

NumberOfReplayedNotificationsDelivered

Fornece ao assinante o número agregado de mensagens reproduzidas do arquivo de tópicos, com resolução de 1 minuto.

NumberOfReplayedNotificationsFailed

Fornece ao assinante o número agregado de mensagens reproduzidas que não foram entregues do arquivo de tópicos, com resolução de 1 minuto.