C# 提取RabbitMQ功能以分离类
我正在学习RabbitMQ教程(),遇到了一个问题 如果我按照教程中的说明编写代码,那么效果很好。但是我想把逻辑转移到单独的类中,这样看起来更好,并且可以重用C# 提取RabbitMQ功能以分离类,c#,rabbitmq,C#,Rabbitmq,我正在学习RabbitMQ教程(),遇到了一个问题 如果我按照教程中的说明编写代码,那么效果很好。但是我想把逻辑转移到单独的类中,这样看起来更好,并且可以重用 public class Consumer { private ConnectionFactory factory; private List<string> receivedData; public Consumer() { receivedData = new List&l
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;
}
}
我看不出与原作有什么不同。但始终接收的数据列表为空。为什么?
提前感谢。当退出
using
语句时,频道和连接将关闭
注意:RabbitMQ团队监控
RabbitMQ用户
,并且只在某些时候回答有关StackOverflow的问题。当退出using
语句时,通道和连接关闭
注意:RabbitMQ团队监视
RabbitMQ用户
,并且只在某些时候回答有关StackOverflow的问题。您是否尝试在接收的
事件处理程序中设置断点?它被击中了吗?您是否尝试在接收的事件处理程序中设置断点?它被击中了吗?
var consumer = new Consumer();
while (true)
{
Console.Clear();
var messages = consumer.GetAllReceivedMessages();
foreach (var msg in messages)
{
Console.WriteLine(msg);
}
Thread.Sleep(5000);
}