Je suis en train de distribuer un message via RabbitMQ qui contient de nombreuses tâches:RabbitMQ: Dispatcher pour les messages qui contiennent de nombreuses tâches
Producer --> RabbitMQ Exchange --> 10 Consumers
.: Le par exemple l'utilisateur envoie un message à l'échange qui contient 1000 tâches. L'échange doit distribuer les tâches de manière égale aux consommateurs ayant la file d'attente la plus courte. Comme le producteur n'a aucune connaissance des mécanismes de mise en file d'attente utilisés dans RabbitMQ, l'échange a besoin d'une logique personnalisée pour scinder l'ordre en tâches et les distribuer aux files d'attente des consommateurs.
Comment cela est-il fait? (J'utilise Python/Pika à la fois sur les producteurs et les consommateurs.)
Bonne idée pour une distribution uniforme, mais le producteur devrait encore envoyer 1000 messages, ce que j'essaie d'éviter. – knipknap
Ah, donc vous essayez de distribuer un seul message contenant 1000 tâches, et 10 consommateurs différents traitent des parties de ce message? Je vais probablement diviser ce message en 10 messages, et aller avec ce qui précède. De cette façon, vous n'enverrez que 10, pas 1000 messages. – eandersson
Exactement! Malheureusement, 1000 tâches n'étaient qu'un exemple - en pratique, le nombre variera jusqu'à environ 100 000 ou plus. Les frais généraux pour les emballer chacun dans un message serait juste trop. Sans oublier que le suivi de tous pour l'achèvement serait poilu. – knipknap