一. 自动重试机制
原理:@RabbitHandler注解 底层用Aop拦截,(消费者)没抛异常,自动提交事务
如Aop异常通知拦截获取异常,自动补偿,消息缓存在RabbitMQ服务器端
二、合理重试
1: 第三方接口无法访问: 可能网络原因,手动抛异常,RabbitMQ自动重试
2: 程序抛出异常:不需重试,日志记录+定时任务健康检查+人工补偿
三、消费者幂等性
用全局ID 或唯一标识如时间戳 或UUID 或者订单ID
消息时用该id先判断是否已消费过。不仅对MQ有要求,对业务上下游也有要求。
一般在业务层处理。增加表来排重,msgId 为唯一索引,更新库存,插入库存变更表。重复消费报错回滚。
网友评论