Rediffusion des messages Amazon SNS pour les abonnés à la rubrique FIFO - Amazon Simple Notification Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Rediffusion des messages Amazon SNS pour les abonnés à la rubrique FIFO

La fonctionnalité de relecture d'Amazon SNS permet aux abonnés à un rubrique de récupérer les messages archivés dans le magasin de données de la rubrique et de les relivrer (ou relire) sur un point de terminaison abonné. Les messages peuvent être relus aussitôt que l'abonnement est créé. Un message relu présente un contenu, un MessageId et un Timestamp identiques à ceux de la copie d'origine. Il contient également l'attribut Replayed, qui vous permet de déterminer qu'il s'agit d'un message relu. Pour relire uniquement certains messages, vous pouvez ajouter une politique de filtre à votre abonnement. Pour en savoir plus sur le filtrage des messages, consultez Filtrage des messages relus.

Créez une politique de rediffusion des messages à l'aide du AWS Management Console

Cette option vous permet de créer une politique de relecture à l'aide de la AWS Management Console.

  1. Connectez-vous à la console Amazon SNS.

  2. Choisissez un abonnement à une rubrique ou créez-en un. Pour en savoir plus sur la création d'abonnements, consultez Création d'un abonnement à une rubrique Amazon SNS.

  3. Pour démarrer la relecture des messages, accédez au menu déroulant Relecture et sélectionnez Lancer la relecture.

  4. Dans la fenêtre modale Période de relecture, effectuez les sélections suivantes :

    1. Choisir la date et l'heure de début de la réécoute : choisissez la date (YYYY/MM/DDformat) et l'heure (format hh:mm:ss sur 24 heures) à partir desquelles vous souhaitez commencer à lire les messages archivés. L'heure de début doit être postérieure au début de l'heure approximative de l'archivage.

    2. (Facultatif) Choisissez la date et l'heure de fin de la réécoute : choisissez la date (YYYY/MM/DDformat) et l'heure (format hh:mm:ss sur 24 heures) auxquelles vous souhaitez arrêter de relire les messages archivés.

    3. Sélectionnez Lancer la relecture.

  5. (Facultatif) Pour arrêter une relecture de messages, accédez à la page Détails de l'abonnement et sélectionnez Arrêter la relecture dans le menu déroulant Relecture.

  6. (Facultatif) Pour surveiller les mesures de réexécution des messages depuis ce flux de travail à l'aide de CloudWatch, voirSurveillez les statistiques de rediffusion des messages à l'aide d'Amazon CloudWatch.

Pour afficher et modifier une politique de relecture des messages

Vous pouvez effectuer les actions suivantes depuis la page Détails de l'abonnement :

  • Pour afficher le statut de relecture des messages, le champ État de la relecture affiche les valeurs suivantes :

    • Terminée : la relecture a permis de relivrer tous les messages et livre à présent les messages nouvellement publiés.

    • En cours : la relecture relit actuellement les messages sélectionnés.

    • Échec : la relecture n'a pas pu se terminer.

    • En attente : état par défaut au lancement de la relecture.

  • (Facultatif) Pour modifier une politique de relecture des messages, accédez à la page Détails de l'abonnement et sélectionnez Lancer la relecture dans le menu déroulant Relecture. Le lancement d'une relecture remplace la lecture existante.

Ajout d'une politique de relecture à l'abonnement à l'aide de l'API

Pour relire des messages archivés, utilisez l'attribut ReplayPolicy. ReplayPolicy peut être utilisé avec les actions d'API Subscribe et SetSubscriptionAttributes. Cette politique présente les valeurs suivantes :

  • StartingPoint (Obligatoire) : indique à quel moment lancer la relecture des messages.

  • EndingPoint (Facultatif) : indique à quel moment arrêter la lecture des messages. Si EndingPoint est omis, la relecture se poursuit jusqu'à ce qu'elle rattrape l'heure actuelle.

  • PointType (Obligatoire) : définit le type des point de départ et d'arrivée. Pour l'heure, la valeur prise en charge pour PointType est Timestamp.

Par exemple, pour récupérer suite à une défaillance en aval et renvoyer tous les messages pour une période de deux heures le 1er octobre 2023, utilisez l'action d'API SetSubscriptionAttributes pour définir un attribut ReplayPolicy comme suit :

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

Pour relire tous les messages envoyés à la rubrique à partir du 1er octobre 2023 et continuer à recevoir tous les messages nouvellement publiés dans votre rubrique, utilisez l'action d'API SetSubscriptionAttributes pour définir un attribut ReplayPolicy pour votre abonnement comme suit :

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

Pour vérifier qu'un message a été relu, l'attribut booléen Replayed est ajouté à chaque message relu.

Ajout d'une politique de relecture à l'abonnement à l'aide du SDK

Pour utiliser un AWS SDK, vous devez le configurer avec vos informations d'identification. Pour plus d'informations, consultez la section Shared config and credentials files dans le guide de référence AWS SDKs and Tools.

L'exemple de code suivant montre comment définir l'attribut ReplayPolicy pour un abonnement de façon à relire les messages de l'archive de la rubrique FIFO d'Amazon SNS pour une fenêtre de temps de 2 heures le 1er octobre 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);

Comprendre le EndingPoint

Lorsque vous appliquez un ReplayPolicy à un abonnement Amazon SNS, la EndingPoint valeur est facultative. Si ce n'EndingPointest pas le cas, la rediffusion démarrera à partir de la date spécifiée StartingPoint et se poursuivra jusqu'à ce qu'elle rattrape l'heure actuelle, y compris le traitement des messages récemment publiés. Une fois rattrapé, l'abonnement fonctionnera comme un abonnement normal et recevra les nouveaux messages au fur et à mesure de leur publication.

Si un EndingPoint est spécifié, le service rejouera les messages du StartingPoint haut vers le, EndingPoint puis s'arrêtera. Cette action met effectivement en pause l'abonnement. Lorsque l'abonnement est suspendu, les messages récemment publiés ne seront pas remis au point de terminaison abonné.

Pour reprendre la livraison des messages, appliquez-en un nouveau ReplayPolicy sans fournir de et réglez le StartingPoint au moment souhaité à partir duquel vous souhaitez continuer à recevoir des messages. EndingPoint Par exemple, pour reprendre un abonnement à partir duquel une rediffusion précédente s'est terminée, réglez le nouveau StartingPoint sur le précédent. EndingPoint

Filtrage des messages relus

Le filtrage des messages Amazon SNS vous permet de contrôler les messages relus par Amazon SNS sur le point de terminaison de votre abonné. Lorsque le filtrage et l'archivage des messages sont tous deux activés, Amazon SNS récupère le message dans le magasin de données de la rubrique avant de l'appliquer à l'attribut FilterPolicy de l'abonnement. Le message est remis au point de terminaison abonné s'il existe une correspondance ; sinon, le message est filtré. Pour de plus amples informations, veuillez consulter Stratégies de filtre d'abonnement Amazon SNS.

Surveillez les statistiques de rediffusion des messages à l'aide d'Amazon CloudWatch

Vous pouvez surveiller les messages en rediffusion à l'aide d'Amazon CloudWatch à l'aide des indicateurs suivants. Pour être informé des anomalies dans vos charges de travail et éviter tout impact, vous pouvez configurer les CloudWatch alarmes Amazon sur ces métriques. Pour en savoir plus, consultez Journalisation et surveillance dans Amazon SNS.

Métrique Description

NumberOfReplayedNotificationsDelivered

Indique à l'abonné le nombre total de messages relus dans l'archive de la rubrique, selon une résolution d'une minute.

NumberOfReplayedNotificationsFailed

Indique à l'abonné le nombre total de messages relus dans l'archive de la rubrique et dont la remise a échoué, selon une résolution d'une minute.