Tout d'abord, vous devez comprendre quels éléments de votre liste ont des limites de mise à l'échelle que vous pourriez atteindre et lesquelles ne le sont pas. Une partie de cela dépend de l'implémentation, donc cela aide à lire sur les internes, par exemple le livre RabbitMQ en action.
Le nombre de files d'attente est limité par votre RAM. Le nombre de messages en jeu, en revanche, n'est pas limité par la RAM car RabbitMQ les envoie automatiquement sur le disque. Une fois, j'ai eu accidentellement près de 8 millions de messages en jeu sur un serveur de développement alors que je n'y prêtais pas attention.
Il n'y a également aucune limite à la taille des messages, mais vous devriez vraiment y réfléchir à deux fois si la taille d'un seul message dépasse 512 Ko. J'ai fini par utiliser un cache mémoire pour passer de gros objets entre les applications et n'ai envoyé que des messages de contrôle plus petits qui comprenaient une clé memcache. Mais si vous le voulez vraiment, vous pouvez envoyer d'énormes JPEG et objets binaires comme des fichiers JAR sous forme de messages.
Le nombre d'abonnés est une limite de système d'exploitation, car un abonné a besoin d'au moins un socket TCP ouvert. Bien sûr, cela est réglable dans la plupart des systèmes d'exploitation, donc votre kilométrage variera et c'est pourquoi vous devez tester votre modèle. J'utilise JMETER pour tester la charge de nos applications Web et je viens de découvrir ce plugin AMQP https://github.com/jlavallee/JMeter-Rabbit-AMQP mais je ne l'ai pas encore utilisé. Dans tous les cas, c'est le genre de test qui vous dira rapidement ce que votre matériel (ou configuration VM) gérera raisonnablement.
La seule chose difficile que vous avez est de tester un grand nombre de consommateurs dans les files d'attente de fanout. Vous pouvez également comparer à l'aide d'un échange de sujets à la place, les consommateurs s'abonnant à l'aide d'une clé de liaison générique (*) qui permet d'obtenir le même résultat final. Essayez d'exécuter ce test avec autant de machines différentes que possible pour vous assurer que vous ne rencontrez pas en quelque sorte un goulot d'étranglement provoqué par un serveur unique exécutant des processus grand public. PS que le plugin Jmeter ressemble, il peut également être utile pour simuler les consommateurs.