RabbitMQ asynchrone Unterstützung
Macht die RabbitMQ .NET-client haben irgendeine Art von asynchroner support? Ich möchte in der Lage, eine Verbindung herstellen und konsumieren Nachrichten asynchron, aber habe noch keinen Weg gefunden, um zu tun, entweder so weit.
(Für das konsumieren von Nachrichten, die ich verwenden können, die EventingBasicConsumer, aber das ist nicht eine komplette Lösung.)
Nur zu geben, einige Kontext ist dies ein Beispiel, wie ich arbeite mit RabbitMQ im moment (code übernommen aus meinem blog):
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("testqueue", true, false, false, null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += Consumer_Received;
channel.BasicConsume("testqueue", true, consumer);
Console.ReadLine();
}
}
- kannst du ein wenig konkreter? was meinst du mit "asynchron" in diesem Fall? was versuchen Sie zu erreichen?
- async/await... also ich bin auf der Suche nach Entsprechungen, die erwartbaren und zurückgeben von Aufgaben, wie System.IO hat z.B. ConnectAsync(), ReadAsync(), etc.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kaninchen unterstützt versandfertig in asynchrone message-Handler durch die
AsyncEventingBasicConsumer
Klasse. Es funktioniert ähnlich wie dieEventingBasicConsumer
, sondern ermöglicht Ihnen die Registrierung einer callback-das gibt einenTask
. Der callback wird ausgelöst, und die zurückgegebenenTask
erwartet von der RabbitMQ-client.DispatchConsumersAsync
- flag auf true?gibt es keine async/await-Unterstützung gebaut, um die RabbitMQ .NET-client an dieser Stelle. Es ist ein offenes ticket, für das auf der RabbitMQ .NET-Client-repository
Zusammenzufassen aktuellen
async
/TPL
Unterstützung:AsyncEventingBasicConsumer
Sie sich anmelden können, Veranstaltungen, für und zurückgebenTask
.AsyncDefaultBasicConsumer
, für die Sie überschreiben können virtuelle Methoden wieHandleBasicDeliver
und zurückgebenTask
. Original PR hier (wie es aussieht wurde auch eingeführt in 5.0?)async
Betrieb, aber ich sehe keine spezifischen links zu diesen Bemühungen.