关于rabbitmq持久化及消息确认总结

重启rabbitmq服务通过两个命令来实现: 
rabbitmqctl stop :停止rabbitmq 
rabbitmq-server restart : 重启rabbitmq

查看rabbitmq队列信息:rabbitmqctl list_queues

 

持久化队列信息:durable,persistent=true

Sender:

   channel.QueueDeclare(queue: "task_queue",
                                    durable: true,
                                    exclusive: false,
                                    autoDelete: false,
                                    arguments: null);
                    //4. 申明队列(指定durable:true,告知rabbitmq对消息进行持久化)
                    var message = GetMessage(args);
                    var body = Encoding.UTF8.GetBytes(message);

                    var properties = channel.CreateBasicProperties();
                    properties.Persistent = true;
                    

                    channel.BasicPublish(exchange: "",
                                         routingKey: "task_queue",
                                         basicProperties: properties,
                                         body: body);

持久化消息的确认设置:

Receiver:

autoAck: false;设置为false,则需要手动回执确认: channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);

autoAck:true;设置为true,则rabbitmq自动执行回执确认,而不管consumer是否正确处理消息

 

 consumer.Received += (model, ea) =>
                {
                    var body = ea.Body;
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine(" [x] Received {0}", message);
                    channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                };

                
                channel.BasicConsume(queue: "task_queue",
                                     autoAck: false,
                                     consumer: consumer);

你可能感兴趣的:(跨平台开发)