c# – RabbitMQ仅侦听队列中的第一条消息

c# – RabbitMQ仅侦听队列中的第一条消息,第1张

概述我的Rabbit队列存在问题,目前只对队列中的第一条消息作出反应,之后被忽略的任何其他消息都被忽略. 我首先实例化连接并在IQueueConnectionProvider中声明队列: var connectionFactory = new ConnectionFactory() { HostName = hostName };var connection = _connectionFactory 我的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);}

我的日志文件最终只有一行“MESSAGE RECEIVED”,但我可以在Rabbit ui界面看到我的其他服务正在将消息推送到该队列就好了.

这里有什么我想念的吗?

解决方法 这是一个愚蠢的错误……又一次.
channel.BasicConsume(queue,false,consumer);

这就是我所需要的.我想手动确认我的消息,因此noAck需要是假的;

总结

以上是内存溢出为你收集整理的c# – RabbitMQ仅侦听队列中的第一条消息全部内容,希望文章能够帮你解决c# – RabbitMQ仅侦听队列中的第一条消息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1246007.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存