因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享
问题分析
解决思路
@Transactional(rollbackFor = Exception.class)
public CollageOrderResponseVO colleageOrder(CollageOrderRequestVO request) {
StopWatch stopWatch = new StopWatch();
stopWatch.start("调用风控系统接口");
// 调用风控系统接口, http调用方式
stopWatch.stop();
stopWatch.start("获取拼团活动信息"); //
// 获取拼团活动基本信息. 查询缓存
stopWatch.stop();
stopWatch.start("获取用户基本信息");
// 获取用户基本信息。http调用用户服务
stopWatch.stop();
stopWatch.start("判断是否是新用户");
// 判断是否是新用户。 查询订单数据库
stopWatch.stop();
stopWatch.start("生成订单并入库");
// 生成订单并入库
stopWatch.stop();
// 打印task报告
stopWatch.prettyPrint();
// 发布订单创建成功事件并构建响应数据
return new CollageOrderResponseVO();
}
StopWatch '新人拼团订单StopWatch': running time = 1195896800 ns
---------------------------------------------
ns % Task name
---------------------------------------------
014385000 021% 调用风控系统接口
010481800 010% 获取拼团活动信息
013989200 015% 获取用户基本信息
028314600 030% 判断是否是新用户
028726200 024% 生成订单并入库
确定方案
// 说明:key表示用户是否存在支付成功的订单标记
// userId是long类型
String key = "order:f:paysucc";
redisTemplate.opsForValue().setBit(key, userId, true);
Boolean paySuccFlag = redisTemplate.opsForValue().getBit(key, userId);
if (paySuccFlag != null && paySuccFlag) {
// 不是新用户,业务异常
}
StopWatch '新人拼团订单StopWatch': running time = 82207200 ns
---------------------------------------------
ns % Task name
---------------------------------------------
014113100 017% 调用风控系统接口
010193800 012% 获取拼团活动信息
013965900 017% 获取用户基本信息
014532800 018% 判断是否是新用户
029401600 036% 生成订单并入库
晴天霹雳
io.lettuce.core.RedisCommandExecutionException: ERR bit offset is not an integer or out of range
at io.lettuce.core.ExceptionFactory.createExecutionException(ExceptionFactory.java:135) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
at io.lettuce.core.ExceptionFactory.createExecutionException(ExceptionFactory.java:108) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:654) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:614) ~[lettuce-core-5.2.1.RELEASE.jar:5.2.1.RELEASE]
…………
恍然大悟
后记
回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群
阅读更多
用 Spring 的 BeanUtils 前,建议你先了解这几个坑!
相信自己,没有做不到的,只有想不到的
在这里获得的不仅仅是技术!
喜欢就给个“在看”