2017-06-04 2 views
0

Je suis un débutant dans l'utilisation des services AWS. J'ai une exigence récemment dans laquelle je voulais envoyer des données du service 1 au service 2 et au service 3. Donc, ce que je pense faire est, je vais pousser la notification à SNS du service 1 et le service 2 et le service 3 serait abonnés à ce sujet SNS. Ainsi, c'est le cas de plusieurs abonnés abonnés au même sujet et les deux abonnés veulent les mêmes données.AWS SNS: Cas de plusieurs abonnés

J'ai quelques doutes concernant les fonctionnalités de base d'AWS SNS. Si quelqu'un pouvait aider, cela serait vraiment utile.

  1. Say, il y a 2 notifications A, B poussé au sujet SNS, il en sera à la fois les abonnés obtenir à la fois de la notification?

  2. Pour le même scénario, à quel moment les 2 notifications sont-elles supprimées du sujet SNS?

  3. SNS enregistre-t-il les notifications quelque part? Ou il passe simplement par les messages aux abonnés? Que se passerait-il si l'un des abonnés échoue et qu'il ne peut pas recevoir certaines notifications? Va-t-il recevoir ces notifications lorsqu'il se connectera à nouveau à un sujet SNS ou ne les obtiendrait pas?

Veuillez fournir vos réponses à certaines des questions ci-dessus. Cela m'aiderait vraiment à comprendre comment SNS fonctionne en interne.

Merci pour votre aide.

Répondre

1

Les messages envoyés aux sujets SNS vont à tous les abonnés.

Les éditeurs envoient des messages aux sujets. Une fois qu'un nouveau message est publié, Amazon SNS tente de transmettre ce message à chaque point d'extrémité qui est abonné au sujet. d'un sujet (italique ajouté)

http://docs.aws.amazon.com/sns/latest/dg/PublishTopic.html

Les messages ne sont pas réellement « supprimé » (vous pouvez penser à SQS) ... mais ils ne persistent pas non plus. Ils sont publiés, puis ils sont partis.

Une exception apparente à cela - retry policies - n'est pas vraiment une exception. Le message, dans ce cas, a été publié et conceptuellement est déjà parti du sujet, mais SNS peut toujours retenter la livraison à une cible spécifique.

Tout ce que SNS fait est un coup de pouce. Les abonnés ne se connectent pas à SNS et demandent des messages. Une fois qu'un message est publié, il est publié. Aucun abonné futur verra jamais un vieux message, et aucun abonné qui "a manqué" il peut revenir pour l'obtenir.

Toutefois ... SNS fanout peut envoyer des messages à plusieurs files d'attente SQS. Dans ce cas, vous inscrivez les files d'attente au sujet et consommez les messages des files d'attente. Chaque file d'attente reçoit une copie de chaque message, et un consommateur de chaque file d'attente recevra une copie chaque fois qu'il ira interroger SQS.

Une file d'attente SQS constitue également une bonne sauvegarde de l'emplacement temporaire de conservation des messages.Si vous envoyez un message SNS à un autre type de point de terminaison, par exemple HTTPS ou Lambda, vous pouvez également envoyer les messages à une file d'attente SQS, mais en mode normal, ne pas interroger la file d'attente. Les messages seront automatiquement purgés de la file d'attente après le maximum message retention period, dont la valeur par défaut est 4 jours, mais peuvent être configurés pour un maximum de 14 jours. Si quelque chose ne va pas avec l'abonné sujet et les messages sont perdus, vous pouvez aller les récupérer de cette file d'attente de sauvegarde, mais sinon, ils finissent par disparaître tout seul lorsque le délai expire. Il n'y a pas de limite au nombre de messages qui peuvent attendre, non lus, dans une file d'attente.

+1

Et si plusieurs utilisateurs partagent le même SQS? Est-ce que tous recevront le message ou, pour que cela se produise, chacun doit avoir son propre SQS enregistré sur le sujet? Merci – Chorinator

+2

@Chorinator si vous diffusez un message à plusieurs consommateurs, et que chacun d'entre eux devrait recevoir une copie de chaque message, alors chacun a besoin de sa propre file d'attente SQS. Une seule file d'attente SQS ne doit délivrer chaque message qu'une seule fois à un consommateur, quel que soit le nombre de consommateurs écoutant la file d'attente. (Dans de rares cas, il est possible que SQS perde le suivi du fait que vous avez déjà reçu un message, et dans ce cas, pour éviter les données perdues, il le remettra, donc techniquement parlant, les files d'attente standard délivrent chaque message », mais pour des raisons pratiques, c'est la même chose qu'une seule fois.) –

+0

Comme indiqué ci-dessus," ** un ** consommateur de chaque file d'attente recevra une copie chaque fois qu'il ira interroger SQS. " –