RabbitMQ应⽤问题

RabbitMQ应⽤问题

幂等性

幂等性是数学和计算机科学中某些运算的性质, 它们可以被多次应⽤, ⽽不会改变初始应⽤的结果.

MQ的幂等性介绍

对于MQ⽽⾔, 幂等性是指同⼀条消息, 多次消费, 对系统的影响是相同的.
⼀般消息中间件的消息传输保障分为三个层级.

  1. At most once:最多⼀次. 消息可能会丢失,但绝不会重复传输.
  2. At least once:最少⼀次. 消息绝不会丢失,但可能会重复传输.
  3. Exactly once:恰好⼀次. 每条消息肯定会被传输⼀次且仅传输⼀次.
    RabbitMQ⽀持"最多⼀次"和"最少⼀次".
    对于"恰好⼀次", ⽬前RabbitMQ还做不到, 不仅是RabbitMQ, ⽬前市⾯上主流的消息中间件, 都做不到
    这⼀点.

解决方案

  1. 全局唯一ID
    1.1为每条消息分配⼀个唯⼀标识符, ⽐如UUID或者MQ消息中的唯⼀ID,但是⼀定要保证唯⼀性.
    1.2消费者收到消息后, 先⽤该id判断该消息是否已经消费过, 如果已经消费过, 则放弃处理.
    1.3如果未消费过, 消费者开始消费消息, 业务处理成功后, 把唯⼀ID保存起来(数据库或Redis等)
  2. 业务逻辑介绍
    在业务逻辑层⾯实现消息处理的幂等性

顺序性保障

顺序性保障介绍

消息的顺序性是指消费者消费的消息和⽣产者发送消息的顺序是⼀致的.
很多业务场景下, 消息的消费是不⽤保证顺序的, ⽐如使⽤MQ实现订单超时的处理. 但有些业务场景, 可能存在多个消息顺序处理的情况. ⽐如⽤⼾信息修改, 对同⼀个⽤⼾的同⼀个资料进⾏修改, 需要保证消息顺序。
哪些情况可能会打破RabbitMQ的顺序性呢? 下⾯介绍

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鱼裤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值