RabbitMQ consumer problem in C# with Win Forms - Message consumed but not shown

xkftehaa  于 2023-06-23  发布在  RabbitMQ
关注(0)|答案(1)|浏览(128)

我设法正确地创建了一个发送者和要发送到RabbitMQ的消息,但是当使用上面给出的方法设置消费者时,它所做的只是消费消息,richtextbox控件没有更新,我也无法在Console中看到消息。我尝试在窗体加载事件和单击按钮事件调用该方法,结果相同,从服务器消耗消息,但在接口上没有返回

public async Task GetMessages()
        {
            try
            {
                var factory = new ConnectionFactory()
                {
                    HostName = "localhost",
                    UserName = "guest",
                    Password = "guest"
                };
                using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "administrator_queue", durable: false, exclusive: false, autoDelete: false, arguments: null);

                    var consumer = new AsyncEventingBasicConsumer(channel);
                    channel.BasicConsume(queue: "administrator_queue", autoAck: true, consumer: consumer);
                    consumer.Received += async (eventSender, eventArgs) =>
                    {
                        var message = Encoding.UTF8.GetString(eventArgs.Body.ToArray());
                        var currentDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

                        await Task.Run(() =>
                        {
                            Invoke((MethodInvoker)delegate
                            {
                                richTextBox.AppendText($"{currentDate}: {message}\n");
                            });
                        });

                        Console.WriteLine($"Received message: {currentDate}: {message}");
                    };
                }
            }
6bc51xsx

6bc51xsx1#

在接收消息之前,这些类型正在被(using)释放。尝试将它们存储为成员变量。

相关问题