• RabbitMQ 消息应答机制(message acknowledgments)


    消息应答机制是一个很重要的功能,它能保证消息队列中的某个消息是否被成功处理。如果RabbitMQ server收到Consumer端发来的应答信号,就会将Consumer刚才处理的消息删除,并发送下一个消息给Consumer去处理;如果Consumer端没有回发确认消息给RabbitMQ server,那么当前消息就一直存在消息队列中,如果Consumer端的连接断掉了,RabbitMQ server就会将该消息发送给另外的Consumer去处理。

    因此可以看出,消息应答机制是针对Consumer来说的。

    设置在Consumer端设置消息应答很简单,共有2步:

    1、设置Consumer时,指定当前的Consumer为消息应答方式;

    2、Consumer在处理完当前消息后,回发一个确认消息给RabbitMQ server即可。

    话不多说,上代码!

    using (var connection = factory.CreateConnection()) {
                    using (var channel = connection.CreateModel()) {
                        channel.QueueDeclare(queue: "q.log.info",
                                             durable: false,
                                             exclusive: false,
                                             autoDelete: false,
                                             arguments: null);
    
                        channel.BasicQos(0, 1, false);
    
                        var consumer = new EventingBasicConsumer(channel);
    
                        consumer.Received += (model, ea) => {
                            var body = ea.Body;
                            var message = Encoding.UTF8.GetString(body);
                            Console.WriteLine("{0}", message);
                            //处理完消息后,回发一个确认消息给RabbitMQ server,说明当前消息已被成功处理
                            channel.BasicAck(ea.DeliveryTag, false);
                        };
                        channel.BasicConsume(queue: "q.log.info",
                                             noAck: false,//将消息应答功能开启  true:不开消息应答功能  false:开启消息应答功能
                                             consumer: consumer);
                       
                        Console.ReadLine();
                    }
                }
  • 相关阅读:
    JS定义一个立即执行的可重用函数
    Git常用命令速记与入门
    设计的一些kubernetes面试题
    运维知识各种链接
    php7.2安装smbclient扩展
    logrotate自定义切割时间的一些坑
    【转】日志收集工具scribe
    ELK日志报警插件ElastAlert并配置钉钉报警
    consul-server集群搭建
    加油,骚年
  • 原文地址:https://www.cnblogs.com/williamwsj/p/8109919.html
Copyright © 2020-2023  润新知