2010-11-14 23 views

Répondre

11

Malheureusement, SQS manque de la sémantique que nous attendons souvent dans les files d'attente. Il n'y a aucune notification ou aucune sorte d'appel "get" bloquant.

Le service SNS/Simple Notification Service d'Amazon peut vous être utile dans cet effort. Lorsque vous avez ajouté du travail à la file d'attente, vous pouvez envoyer une notification aux travailleurs abonnés.

Voir aussi:

http://aws.amazon.com/sns/

Best practices for using Amazon SQS - Polling the queue

+3

SQS a maintenant commencé à fournir une longue interrogation.cela réduit donc vos appels à SQS. – ankitjaininfo

6

En outre de signaler un problème avec SQS - Vous devez vérifier les nouveaux notifications, et il n'y a pas garantie que sur un sondage particulier vous recevra un événement qui existe dans la file d'attente (cela est dû à la redondance de leur architecture). Cela signifie que vous devez considérer la possibilité que votre sondage n'a pas retourné un message qui existait (ce qui signifiait pour moi que je devais augmenter le taux d'interrogation). Dans l'ensemble, j'ai trouvé trop de limitations avec SQS (comme je l'ai constaté avec d'autres outils AWS comme SimpleDB). Mais c'est juste mon opinion injectée.

+0

Avez-vous des références aux documents AWS qui mentionnent le problème de la réception d'événements qui ne sont pas dans la file d'attente? –

+0

Le problème est d'interroger un événement, étant dit qu'il n'y a pas de message, mais il y en a un. Pas que vous receviez des messages qui ne sont pas dans la file d'attente. Mais, après le délai d'expiration de la visibilité, les autres scrutateurs verront les messages que vous êtes en train de traiter, de sorte qu'un message pourrait être traité deux fois si vous ne le traitez pas dans le délai de visibilité. –

+2

Ce n'est pas vraiment un problème avec SQS - c'est un problème d'application. Si c'est long, vous devez étendre le délai de visibilité pendant le processus. –

8

Ceci est (maintenant) possible avec l'interrogation longue sur une file d'attente SQS.

http://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Query_QueryReceiveMessage.html

support d'interrogation longue (nombre entier de 1 à 20) - la durée (en secondes) que l'appel d'action ReceiveMessage attendra jusqu'à ce qu'un message est en attente pour inclure dans la réponse, plutôt que de retourner une réponse vide si un message n'est pas encore disponible.

Si vous ne spécifiez pas WaitTimeSeconds dans la demande, l'attribut de file d'attente ReceiveMessageWaitTimeSeconds est utilisé pour déterminer le délai d'attente.

Type: Nombre entier de 0 à 20 (secondes)

défaut: Les ReceiveMessageWaitTimeSeconds de la file d'attente.

7

réelle si vous ne nécessitent pas une faible latence, vous pouvez essayer ceci:

Créer une alerte CloudWatch sur votre file d'attente, comme les messages visibles ou les messages reçus> 0. Comme une action que vous enverrez un message à un Sujet sns, qui peut ensuite envoyer le message à vos employés via un point de terminaison http/s.

normalement ce type d'approche est utilisé pour l'autoscaling.