Ich benutze den C# -Client für RabbitMQ. Viele Beispiele verwenden Console.ReadLine()
oder while(true)
, um die Verbindung offen zu halten, um Nachrichten zu konsumieren. while(true)
wird die CPU brennen und ReadLine()
ist nicht wirklich auf einem Webserver anwendbar.C#: RabbitMQ-Nachrichten auf Web-Server
Ich benutze Asp.Net Core Web Service und versuche, einige Tests dafür zu schreiben. In meinem der Server-Startmethode, nenne ich
Task.Factory.StartNew(() =>
{
using (IConnection connection = _connectionFactory.CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
// configuring queue etc....
options.DeclareConsumer(queueName, MessageReceived);
ResetEvent.WaitOne();
}
}
});
ich diese Aufgabe nicht überall erwarten. Natürlich möchte ich, dass mein Webserver immer noch Anfragen bedient.
In meinem Integrationstest würde ich dann in der Lage sein, den Faden zu stoppen mit MailMessageQueue.ResetEvent.Set();
, was ich brauche nicht, ob ich Block nicht, ist aber hilfreich, wenn ich sperren müssen ..
Ich bin etwas verwirrt, wenn ich sollte blockieren oder nicht, wie viele Threads brauche ich usw. Gibt es irgendwo ein nützliches Beispiel?
Dank ..
Danke für die schnelle Antwort. Werde das versuchen, sieht vielversprechend aus :) – Senj