31.生产者如何将消息可靠投递到mq?
1.client发送消息给mq
2.mq将消息持久化后,发送ack消息给client,此处有可能因为网络问题导致ack消息无法发送到client,那么client在等待超时后,会重新传递消息。
3.client收到ack消息后,认为消息已经投递成功。
32.mq如何将消息可靠投递到消费者?
1.mq将消息push给client,(或client来pull),
2.client得到消息并做完业务逻辑。
3.client发送ack消费给mq,通知mq删除该消息,此处有可能因为网络问题导致ack失败,那么client会重复消息,这里就引出消息幂等的问题
4.mq将已消费的消息删除
33.如何保证rabbitmq消息的高可用?
1.rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式
单机模式:就是demo级别的,一般就是本地启动玩玩而已,没人生产模式用单机模式
普通集群模式:就是在多台机器上启动多个rabbitmq实例,每个机器启动一个。
镜像集群模式:这种模式,才是所谓的rabbitmq·的高可用模式,跟普通集群不一样的的是,你创建的queue,无论元数据还是queue里的消息都会存在于多个实例上,然后每次你写消息到queue逇时候,都会自动把消息到多个实例的queue里进行消息同步。