2010-09-08 4 views
0

J'ai l'intention d'utiliser AMQP pour permettre à une collection distribuée de machines de rapporter à un emplacement central de manière asynchrone. L'idée est de déposer des messages dans la file d'attente et de permettre à l'entité centrale de journalisation de traiter la file d'attente de manière découplée; le 'processus' consiste simplement à créer ou mettre à jour une ligne dans une table de base de données.Implémentation de la priorité des messages dans AMQP

Un problème que je prévois est l'effet de la gigue du réseau dans le processus faire la queue message - ce qui se passe si un update est accidentellement devant un insert parce que le temps entre les deux messages émis est inférieure à la gigue réseau ?

En lisant la spécification AMQP, il me semble que je pourrais juste appliquer une priorité plus élevée à insert s afin qu'ils sautent la file d'attente et soient traités en premier. Mais probablement ceci ne s'applique que si une file d'attente existe réellement chez le courtier à ignorer. Existe-t-il un moyen d'imposer un tampon ou un délai au courtier pour absorber cette gigue et permettre que la priorité soit donnée avant que les messages soient transmis au (x) consommateur (s)? Ou dois-je descendre la route d'un resequencer as ActiveMQ suggests?

Répondre

3

Le manque de commande entre plusieurs éditeurs n'a rien à voir avec la gigue du réseau, c'est une chose tout à fait naturelle dans les applications distribuées. Les messages du même éditeur seront toujours commandés. Si vous avez vraiment besoin d'un ordre causal des actions effectuées par différents nœuds, alors un reséquenceur ou un schéma de numérotation de séquence global sont vos seules options. Notez que vous ne pouvez pas utiliser les horodateurs de l'expéditeur pour cela, qui est ce que tout le monde semble essayer en premier ..

+0

Merci Holger. Quand vous dites "les messages du même éditeur seront toujours commandés" - est-ce que cela dépend de la mise en œuvre d'AMQP en cours d'utilisation? – Matt

+0

Je pense que cela fait partie de la spécification - tout le reste serait très surprenant. Devrait être facile à trouver. –

Questions connexes