首页 > 解决方案 > 当方法被另一个方法调用时,RabbitMQ Consumer 不检索消息

问题描述

考虑到提到的来自 RabbitMQ 官方网站 的代码,我在控制台应用程序中实现了代码并且运行良好,但是当从另一个项目调用此方法时,receivedMessage 为空!

using RabbitMQ.Client.Events;
using System;
using System.Text;

class Receive
{
    public static void Main()
    {
        var receivedMessage="";
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using(var connection = factory.CreateConnection())
        using(var channel = connection.CreateModel())
        {
            channel.QueueDeclare(queue: "hello",
                             durable: false,
                             exclusive: false,
                             autoDelete: false,
                             arguments: null);

            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += (model, ea) =>
        {
            var body = ea.Body.ToArray();
            var message = Encoding.UTF8.GetString(body);
            receivedMessage = message;
            Console.WriteLine(" [x] Received {0}", message);
        };
            channel.BasicConsume(queue: "hello",
                             autoAck: true,
                             consumer: consumer);

        Console.WriteLine(" Press [enter] to exit.");
        Console.ReadLine();
        }
    }
}

标签: c#asp.net-mvcrabbitmq

解决方案


推荐阅读