2017-01-21 1 views
1

Je suis à la recherche d'un service de minuteur distribué. Les services clients distants multiples devraient pouvoir s'enregistrer pour des rappels (via des API REST) ​​après des intervalles spécifiés. La durée d'un intervalle peut être de 1 minute. Je peux vivre avec une marge d'erreur d'environ 1 minute. Le nombre de ces rappels peut aller jusqu'à 100 000 pour l'instant, mais je devrais l'augmenter plus tard. J'ai regardé des planificateurs comme Quartz mais je ne suis pas sûr qu'ils soient aptes au problème. Avec Quartz, je devrai probablement enregistrer les demandes de rappel dans un DB et interroger chaque minute pour les demandes en retard sur 100 000 lignes. Je ne suis pas sûr que cela va évoluer. Existe-t-il des solutions prêtes à l'emploi? Sinon, comment puis-je en construire un?Service de minuteur distribué

Répondre

0

Affichage comme réponse depuis que je ne peux rien dire

Un plus d'options à considérer est une file d'attente de messages. Où vous publiez un message avec un délai planifié afin que les consommateurs puissent consommer après ce délai.

Amazon SQS Delay Queues

files d'attente de retard vous permettent de reporter la livraison de nouveaux messages dans une file d'attente pour le nombre de secondes. Si vous créez une file d'attente de retard, tous les messages que vous envoyez à cette file d'attente sont invisibles aux consommateurs pendant la durée du délai. Vous pouvez utiliser l'action CreateQueue pour créer une file d'attente de délai en définissant l'attribut DelaySeconds sur une valeur comprise entre 0 et 900 (15 minutes). Vous pouvez également modifier une file d'attente existante dans une file d'attente de délai en utilisant l'action SetQueueAttributes pour définir l'attribut DelaySeconds de la file d'attente.

Scheduling Messages with RabbitMQ

https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/

Un utilisateur peut déclarer un échange avec le retard message x-type et puis publier des messages avec l'en-tête personnalisé x retard exprimant en millisecondes un temps de retard pour le message. Le message sera envoyé aux files d'attente respectives après des millisecondes de retard x.