Ich versuche, die Gesamtzahl der Verbraucher für eine bestimmte Warteschlange in RabbitMQ abzurufen. Ich schrieb meinen Code in C# mit dem RabbitMQ-Client für .Net.Abruf der Anzahl der Benutzer von RabbitMQ
string user = ConfigurationManager.AppSettings["rmq_user"];
string pword = ConfigurationManager.AppSettings["rmq_pass"];
string port = ConfigurationManager.AppSettings["rmq_port"];
string host = new Uri(ConfigurationManager.AppSettings["rest_api_url"]).Host;
var factory = new ConnectionFactory();
factory.Uri = "amqp://" + user + ":" + pword + "@" + host + ":" + port;
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
var consumerCount = ((RabbitMQ.Client.Impl.ModelBase)(channel)).m_consumers;
}
}
Ich erhalte var consumerCount = ((RabbitMQ.Client.Impl.ModelBase)(channel)).m_consumers;
als 0 jedoch kann ich die Verbraucher in dem RabbitMQ Netz sehen und ich habe dafür gesorgt, dass die Verbraucher in dieser Warteschlange existieren. Ist dies der richtige Weg, um den Verbraucher zu zählen oder mache ich etwas falsch? Ich weiß, dass dies mit RabbitMQ admin getan werden kann, aber ich muss es in C# tun. Bitte lassen Sie mich wissen, wenn ich weitere Details angeben kann.
channel.QueueDeclare (warteschlange, wahr, falsch, falsch, null); erstellt eine neue Warteschlange oder wird die vorhandene Warteschlange verwendet? Wird es auch alle Nachrichten entfernen? –
Es wird eine Warteschlange erstellt, wenn sie nicht vorhanden ist. Sonst wird es nichts tun. Es werden auch keine Nachrichten aus der Warteschlange entfernt. – pratikvasa
Ich erhalte diese Ausnahme für eine bestehende Queue: Die AMQP-Operation wurde unterbrochen: AMQP close-reason, initiiert von Peer, code = 406, text = "PRECONDITION_FAILED - ungleiches arg 'x-dead-letter- exchange "für die Warteschlange" ev.ae.se.q.automation.HR 'in vhost'/': empfangen keine, aber aktuell ist der Wert' ev.ae.se.x.fallout 'vom Typ' longstr '", classId = 50, methodId = 10, cause = Aber wenn ich mit einer nicht existierenden Queue versuche, erstellt sie die neue Queue und arbeitet auch beim zweiten Mal fehlerfrei. –