RabbitMQ - Holen Sie sich die Gesamtzahl der Nachrichten in die Warteschlange eingereiht
Ich habe ein Java-client, der überwacht RabbitMQ Warteschlange. Ich bin in der Lage, um die Anzahl von Meldungen, die sich derzeit in der Warteschlange mit diesem code
@Resource
RabbitAdmin rabbitAdmin;
..........
DeclareOk declareOk = rabbitAdmin.getRabbitTemplate().execute(new ChannelCallback<DeclareOk>() {
public DeclareOk doInRabbit(Channel channel) throws Exception {
return channel.queueDeclarePassive("test.pending");
}
});
return declareOk.getMessageCount();
Möchte ich, um einige weitere zusätzliche details wie -
- Nachrichtentext der aktuell eingereiht Elemente.
- Anzahl der Nachrichten, wurde in die Warteschlange eingereiht in der Warteschlange, da die Warteschlange erstellt wurde.
Gibt es eine Möglichkeit, diese Daten abrufen im Java-client?
InformationsquelleAutor Code Geass | 2013-07-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit AMQP-Protokoll (einschließlich Implementierung RabbitMQ) Sie nicht bekommen kann eine solche info mit 100% Garantie.
Die nächste Nummer, um Nachrichten zu zählen ist-Nachrichten zählen kehrte mit
queue.declare-ok
(AMQP.Warteschlange.DeclareOk
in java AMQP client library).Während die Nachrichten zählen, erhalten Sie mit
queue.declare-ok
kann exakt Nachrichten Nummer reiht, kann man sich auf Sie nicht verlassen, da es nicht zählen Nachrichten, die darauf warten anerkennt oder veröffentlicht Warteschlange während der Transaktion, aber nicht verpflichtet, noch.Es hängt wirklich welche Art von Genauigkeit, brauchen Sie.
Wie, um Nachrichten in die Warteschlange eingereiht Körper, können Sie manuell extrahieren Sie alle Nachrichten in der Warteschlange, sehen Ihre Körper und legte Sie zurück in die Warteschlange. Dies ist der einzige Weg, das zu tun, was Sie wollen.
Können Sie einige Informationen zu den Nachrichten zählen mit Management-Plugin, RabbitMQ-Management-HTTP-API und rabbitmqctl util (siehe list_queues, list_channels).
Können Sie nicht bekommen, insgesamt veröffentlichte Nachrichten zählen, da die Warteschlange erstellt wurde, und ich denke, dass niemand um solche Statistiken, während es nutzlos (FYI, mit der Nachrichtenfluss im Durchschnitt 10k pro Sekunde wirst du auch nicht erreichen, uint64 in ein paar tausend Jahren).
Eine kleine Korrektur zu dem, was zaq178miami schrieb: 10k Nachrichten pro Sekunde für die 2 Wochen ist die Summe von 1,463,132,160,000 Nachrichten. Ein unsigned int 64 bit ist 2^64 = 18,446,744,073,709,551,615 weit mehr als das.
Yeah, thx für den fix.
Hinweis: Wenn Sie bei google nach "RabbitMQ-Management-HTTP-Statistik", sehen Sie, dass es ein "veröffentlichen" - Zähler, der die Warteschlange total nb von Nachrichten in die Warteschlange eingereiht (da die broker gestartet wurde soweit ich das erkennen könnte). Beachten Sie auch, dass die Einstellung msg_rates_age und msg_rates_incr querystring-Parameter bieten historisiert Werte dieser Zähler.
InformationsquelleAutor pinepain
Sie erhalten eine Fehlermeldung, wenn die Warteschlange Erklärung args sind Verschieden von denen, die Warteschlange erstellt wurde. Verwenden queueDeclarePassive statt
InformationsquelleAutor Giumbix
Zugriff auf queue-details die via http-api,
http://public-domain-name:15672/api/queues/%2f/queue_name
Zugriff auf queue-Daten per Befehl von localhost cli promt,
curl -i -u guest_uname:guest_password http://localhost:15672/api/queues/%2f/queue_name
Wo,
"%2f " ist default-vhost "/"
InformationsquelleAutor Hemant Thorat