Zuallererst müssen Sie verstehen, welche Elemente in Ihrer Liste Skalierungsbeschränkungen haben, die Sie möglicherweise treffen, und welche nicht. Einige davon sind implementierungsabhängig, so dass es hilfreich ist, sich über Interna zu informieren, beispielsweise über das Buch RabbitMQ in Action.
Die Anzahl der Warteschlangen ist durch Ihren Arbeitsspeicher begrenzt. Die Anzahl der abgespielten Nachrichten ist hingegen nicht durch den Arbeitsspeicher begrenzt, da RabbitMQ sie automatisch auf die Festplatte auslagert. Einmal habe ich versehentlich fast 8 Millionen Nachrichten auf einem Entwicklungsserver abgespielt, als ich nicht aufgepasst habe.
Es gibt auch keine Begrenzung für die Nachrichtengröße, aber Sie sollten wirklich zweimal überlegen, ob die Größe einer einzelnen Nachricht 512 KB überschreitet. Ich habe schließlich einen Speichercache verwendet, um große Objekte zwischen Anwendungen zu übertragen, und nur kleinere Steuernachrichten gesendet, die einen Memcache-Schlüssel enthielten. Aber wenn Sie wirklich wollen, können Sie riesige JPEGs und binäre Objekte wie JAR-Dateien als Nachrichten senden.
Die Anzahl der Abonnenten ist ein OS-Limit, da ein Abonnent mindestens einen offenen TCP-Socket benötigt. Das ist natürlich in den meisten Betriebssystemen einstellbar, sodass Ihre Laufleistung variiert und Sie deshalb Ihr Modell testen müssen. Ich habe JMETER zum Laden unserer Webanwendungen verwendet und gerade dieses AMQP-Plugin entdeckt: https://github.com/jlavallee/JMeter-Rabbit-AMQP , habe es aber noch nicht verwendet. In jedem Fall ist dies die Art von Test, mit der Sie schnell feststellen können, wie Ihre Hardware (oder VM-Konfiguration) angemessen umgeht.
Das einzige Problem, das Sie haben, ist das Testen einer großen Anzahl von Verbrauchern in den Fanout-Warteschlangen. Möglicherweise möchten Sie stattdessen auch einen Themenaustausch mit Verbrauchern vergleichen, die einen Platzhalter (*) als Bindungsschlüssel verwenden, um dasselbe Endergebnis zu erzielen. Versuchen Sie, diesen Test mit so vielen verschiedenen Computern wie möglich durchzuführen, um sicherzustellen, dass Sie nicht auf einen Engpass stoßen, der durch einen einzelnen Server verursacht wird, auf dem Verbraucherprozesse ausgeführt werden. PS: Das Jmeter-Plugin scheint auch nützlich zu sein, um Verbraucher zu simulieren.