zoukankan      html  css  js  c++  java
  • 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();
                    }
                }
  • 相关阅读:
    Java——多线程之方法详解
    Java——深入理解Java异常体系
    Java——Java代码的执行顺序
    Java——抽象类与接口的前世今生
    存储系列之 LUN 和 LVM
    存储系列之 RAID技术原理简介
    存储系列之 硬盘接口与SCSI总线协议
    存储系列之 介质(软盘、硬盘、固态)和磁盘寻址
    Redis设计原理简介
    MySQL InnoDB索引介绍以及在线添加索引实例分析
  • 原文地址:https://www.cnblogs.com/williamwsj/p/8109919.html
Copyright © 2011-2022 走看看