[英]Extracting RabbitMQ functionality to separate class
我正在閱讀RabbitMQ教程( 本教程),遇到了一個問題。
如果我按照本教程中的代碼編寫代碼,則可以正常工作。 但是我想將邏輯移到單獨的類中,所以它看起來更好並且可重用。
public class Consumer
{
private ConnectionFactory factory;
private List<string> receivedData;
public Consumer()
{
receivedData = new List<string>();
factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare("hello", false, false, false, null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
receivedData.Add(message);
};
channel.BasicConsume("hello", true, consumer);
}
}
public List<string> GetAllReceivedMessages()
{
return receivedData;
}
}
主程序
var consumer = new Consumer();
while (true)
{
Console.Clear();
var messages = consumer.GetAllReceivedMessages();
foreach (var msg in messages)
{
Console.WriteLine(msg);
}
Thread.Sleep(5000);
}
我認為與原始版本沒有任何差異。 但是所有時間receiveData列表都是空的。 為什么?
提前致謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.