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,
MessageIdeTimestampque a original. -
A mensagem inclui um atributo
Replayedpara 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.
Faça login no console do Amazon SNS
. -
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.
-
Para iniciar a reprodução de mensagens, acesse o menu suspenso Reproduzir e selecione Iniciar reprodução.
-
No modal Prazo de repetição, selecione:
-
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.
-
(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.
-
Selecione Iniciar repetição.
-
-
(Opcional) Para interromper a reprodução de mensagens, acesse a página Detalhes da assinatura e selecione Interromper repetição no menu suspenso Reproduzir.
-
(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. SeEndingPointfor 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 paraPointTypeé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. |