C# RabbitMQ只侦听队列上的第一条消息

C# RabbitMQ只侦听队列上的第一条消息,c#,rabbitmq,C#,Rabbitmq,我的Rabbit队列有一个问题,当前它只对队列中的第一条消息做出反应,之后任何其他被推送的消息都被忽略 我首先在IQueueConnectionProvider中实例化连接并声明队列: var connectionFactory = new ConnectionFactory() { HostName = hostName }; var connection = _connectionFactory.CreateConnection(); var channel = connection.Cre

我的Rabbit队列有一个问题,当前它只对队列中的第一条消息做出反应,之后任何其他被推送的消息都被忽略

我首先在IQueueConnectionProvider中实例化连接并声明队列:

var connectionFactory = new ConnectionFactory() { HostName = hostName };
var connection = _connectionFactory.CreateConnection();
var channel = connection.CreateModel();
然后,IQueueConnectionProvider在IQueueListener中用作依赖项,只使用一个方法:

public void ListenToQueue(string queue)
{
    var channel = _queueConnectionProvider.GetQueue();

    var consumer = new EventingBasicConsumer(channel);
    consumer.Received += (model, ea) =>
    {
        string path = @"d:\debug.log.txt";
        File.AppendAllLines(path, new List<string>() {"MESSAGE RECEIVED", Environment.NewLine });

        var body = ea.Body;
        var message = Encoding.UTF8.GetString(body);

        channel.BasicAck(ea.DeliveryTag, false);
    };

    channel.BasicConsume(queue, true, consumer);

}
public void ListenToQueue(字符串队列)
{
var channel=_queueConnectionProvider.GetQueue();
var消费者=新事件基本消费者(渠道);
消费者.已接收+=(型号,ea)=>
{
字符串路径=@“d:\debug.log.txt”;
AppendAllLines(路径,new List(){“MESSAGE RECEIVED”,Environment.NewLine});
变量体=ea.body;
var message=Encoding.UTF8.GetString(body);
channel.BasicAck(ea.DeliveryTag,false);
};
channel.BasicConsume(队列、true、消费者);
}
我的日志文件最后只是一行“MessageReceived”,但是我可以在RabbitUI界面中看到,我的其他服务正在将消息推送到该队列中


这里缺少什么吗?

代码运行正常!已经使用我的队列进行了测试,并且能够在日志文件中获得9次“MESSAGE RECEIVED”;因为我的队列中有9条消息

我在没有这行代码的情况下尝试过,效果很好
var channel=_queueConnectionProvider.GetQueue()

这是一个愚蠢的错误。。。再一次

channel.BasicConsume(queue, false, consumer);
这就是我需要的。我想手动确认我的消息,因此
noAck
需要为
false