簡體   English   中英

提取RabbitMQ功能以分離類

[英]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列表都是空的。 為什么?

提前致謝。

using語句退出時,通道和連接關閉。


注意: RabbitMQ團隊監視rabbitmq-users 郵件列表 ,僅在某些情況下回答關於StackOverflow的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM