2016-11-17 1 views
0

Pour mon application Web, j'ai besoin d'une instance distincte de EC2 pour traiter les tâches gourmandes en ressources processeur et les éléments qui peuvent être mis en file d'attente pour ne pas encombrer l'instance de serveur Web. Lorsque vous créez une instance AWS Elastic Beanstalk, vous devez choisir entre un environnement "Web" ou "Travailleur". D'après ce que je comprends, c'est dans l'environnement des travailleurs que je vais traiter ce genre de tâches.Veuillez expliquer Amazon SQS (et la mise en file d'attente en général)

Quel est le rôle de SQS dans ce contexte? Je l'ai lu est seulement sur l'envoi de "messages" et ce genre de choses, mais comment vais-je obtenir mon image redimensionnée avec un "message"?

Dois-je créer un code spécifique et distinct pour l'instance de travail, gérer le redimensionnement de l'image, puis utiliser SQS pour le commander afin de traiter l'image? Puis, SQS peut-il transmettre l'image d'une instance Web à une instance de travail? Je manque complètement le concept principal.

Répondre

0

Un service de mise en file d'attente (tel que Amazon SQS) est utilisé pour stocker des messages en vue d'une récupération ultérieure. Pensez-y comme une liste TODO - vous ajoutez des éléments à la file d'attente, et plus tard vous récupérez un élément de la file d'attente et agissez sur l'élément. Par exemple, supposons que les utilisateurs téléchargent des images sur un site Web et que vous souhaitiez générer des vignettes à partir de ces images. Votre site Web stockera l'image dans Amazon S3, puis placera un message dans une file d'attente SQS. Le message comprendrait une référence à l'image dans S3 et des détails sur l'utilisateur.

Ensuite, votre Elastic Beanstalk demandera un message de la file d'attente et traitera l'image. Il récupère l'image de S3, la redimensionne, la stocke dans un seau S3, puis peut-être envoyer un courriel à l'utilisateur pour lui dire que le travail est terminé. Le travailleur quitte alors, et Elastic Beanstalk déclenchera un nouveau travailleur pour lire le prochain message de la file d'attente et tout recommencer.

Elastic Beanstalk worker

Alors, oui - vous allez créer le code des travailleurs . Elastic Beanstalk déclenche le travailleur avec le message SQS. SQS lui-même ne déclenche rien - c'est en fait Elastic Beanstalk qui récupère le message et exécute le worker.

Voir: Elastic Beanstalk worker environments

+0

Merci, cela clarifie tout. Donc, en fait, le travailleur va lancer une nouvelle instance distincte de l'application, juste pour effectuer le travail en file d'attente. Il sera déclenché par un coup sur une URL. Donc, tout ce qu'il y a à faire du côté du code, c'est de définir des routes et du code pour gérer les files d'attente. Est-ce que c'est ça ? –