Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提取RabbitMQ功能以分离类_C#_Rabbitmq - Fatal编程技术网

C# 提取RabbitMQ功能以分离类

C# 提取RabbitMQ功能以分离类,c#,rabbitmq,C#,Rabbitmq,我正在学习RabbitMQ教程(),遇到了一个问题 如果我按照教程中的说明编写代码,那么效果很好。但是我想把逻辑转移到单独的类中,这样看起来更好,并且可以重用 public class Consumer { private ConnectionFactory factory; private List<string> receivedData; public Consumer() { receivedData = new List&l

我正在学习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;
    }
}
我看不出与原作有什么不同。但始终接收的数据列表为空。为什么?


提前感谢。

当退出
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);
        }