2016-03-31 8 views
0

Wenn der RabbitMQ-Broker einen Fanout-Austausch mit vielen daran gebundenen Warteschlangen hat, die Warteschlangen dauerhaft sind und die an die Exchange ausgelieferten Nachrichten dauerhaft sind, wird in jeder Warteschlange eine separate Warteschlange gespeichert Kopieren für die Nachricht oder den Broker kann in der Lage sein, in die Warteschlange gestellte Nachrichtenpersistenz zu ermitteln und zu optimieren und die Nutzdaten nicht mehrfach für jede Warteschlange im Fan-Out zu speichern, sondern etwa Nachrichtenverbindungen/Referenzen speichern?RabbitMQ Warteschlangenspeicherplatznutzung im Fanout-Austauschszenario

Antwort

0

Es hängt von der Größe der Nachricht ab. Bei Persistenz hat jede dauerhafte Warteschlange, die eine Nachricht empfängt, einen Warteschlangenindex, der auf diese Nachricht verweist. Größere Nachrichten (standardmäßig> = 4K) werden in den Nachrichtenspeicher geschrieben und vom Warteschlangenindex referenziert. Daher hat jede an Ihren Fanout-Austausch gebundene Warteschlange einen Warteschlangenindex für die Nachricht, aber nur eine Kopie der Nachrichtennutzlast befindet sich im Nachrichtenspeicher.

Kleinere Nachrichten werden vollständig innerhalb des Warteschlangenindexes ohne Eintrag im Nachrichtenspeicher gespeichert. Wenn Ihr Fanout-Austausch eine kleine Nachricht empfängt, hat jede gebundene Warteschlange ihre eigene Kopie der gesamten Nachricht.

Eine gute Erklärung der RabbitMQ Nachrichtenpersistenz finden Sie unter https://www.rabbitmq.com/persistence-conf.html.