# 消息确认进制

我们知道可以通过持久化（交换机、队列和消息持久化）来保障我们在服务器崩溃时，重启服务器消息数据不会丢失。但是我们无法确认当消息的发布者在将消息发送出去之后，消息到底有没有正确到达Broker代理服务器呢？如果不进行特殊配置的话，默认情况下发布操作是不会返回任何信息给生产者的，也就是默认情况下我们的生产者是不知道消息有没有正确到达Broker的。如果在消息到达Broker之前已经丢失的话，持久化操作也解决不了这个问题，因为消息根本就没到达代理服务器，这个是没有办法进行持久化的，那么当我们遇到这个问题又该如何去解决呢？

这里就是我们讲解到的RabbitMQ中的消息确认机制，通过消息确认机制我们可以确保我们的消息可靠送达到我们的用户手中，即使消息丢失掉，我们也可以通过进行重复分发确保用户可靠收到消息。

今天我们讲解的RabbitMQ消息确认机制（面试会问消息的可靠性），主要包括两个方面，因为RabbitMQ为我们提供了两种方式：

* 通过AMQP事务机制实现，这也是AMQP协议层面提供的解决方案；
* 通过将channel设置成confirm模式来实现；

## 一.[**消息确认机制(AMQP事务)**](rabbitmq2014-xiao-xi-que-ren-jin-zhi/rabbitmq2014-xiao-xi-que-ren-ji-523628-amqp-shi-52a129)

## 二.[**消息确认机制(Confirm模式)**](rabbitmq2014-xiao-xi-que-ren-jin-zhi/xiao-xi-que-ren-ji-523628-confirm-mo-5f0f29)
