RabbitMQ

本文详细介绍了RabbitMQ架构,包括生产者、消费者、Exchange和Queue的角色,以及如何通过确认机制、事务模式和消息确认模式避免消息丢失。重点讨论了生产者和MQ如何确保消息的可靠投递,以及消费幂等性处理。
摘要由CSDN通过智能技术生成

1. RabbitMQ架构

- Publisher - 生产者:发布消息到RabbitMQ中的Exchange
- Consumer - 消费者:监听RabbitMQ中的Queue中的消息

- Exchange - 交换机:和生产者建立连接并接收生产者的消息

- Queue - 队列:Exchange会将消息分发到指定的Queue,Queue和消费者进行交互

- Routes - 路由:交换机以什么样的策略将消息发布到Queue

完整架构图

2. 如何避免消息丢失

  • 消息的丢失,在mq角度考虑,有三种途径
    1.生产者确认发送到mq服务器,生产者确认机制
    2.mq服务器不丢数据(队列消息持久化)
    3.消费者确认消费掉消息(消费者确认机制) 生产者/消费者保证消息不丢失有两种实现方式
    bash 1.开启事务模式 2.消息确认模式 两种方式比较:事务回降低性能,一般使用消息确认模式

    4.生产者如何将消息可靠投递到MQ?
    1.Client发送消息给MQ
    2.MQ将消息持久化后,发送Ack消息给Client,此处有可能因为网络问题导致Ack消息无法发送到Client,那么Client在等待超时后,会重传消息;
    3.Client收到Ack消息后,认为消息已经投递成功。

    5 . MQ如何将消息可靠投递到消费者?
    1.MQ将消息push给Client(或Client来pull消息)
    2.Client得到消息并做完业务逻辑
    3.Client发送Ack消息给MQ,通知MQ删除该消息,此处有可能因为网络问题导致Ack失败,那么Client会重复消息,这里就引出消费幂等的问题;
    4.MQ将已消费的消息删除
    备注: - confirm机制:保证消息到达exchange
    - return机制: 保证消息到达队列

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值