场景
1、网络抖动导致消费异常;
2、并发请求,锁冲突重试。
架构图

补偿表设计
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| CREATE TABLE `message_compensation` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', `message` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '消息体', `service_name` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '消费者方法名', `retry_count` tinyint(4) NOT NULL DEFAULT '0' COMMENT '重试次数', `has_consume_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '重试标志,0待重试,1失败,2成功', `exception_msg` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '消费异常信息', `create_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建人id', `create_time` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `update_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新人id', `update_time` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `is_delete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=293 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='消费失败补偿表';
|