Spring AOP 切面通信
miozus 人气:0场景描述
在秒杀微服务中,笔者在需要各种校验前端传来的参数后,通过 Redis 加锁限流(切面A)并返回,最后封装订单数据推送到 RabbitMQ 消息队列(切面B)做善后工作。
问题:如何将 切面 A 的数据传递 给切面B 处理呢?
/** * 添加到秒杀流程 * * @param killId 秒杀商品缓存键 sessionId_skuId * @param key 随机码 randomCode * @param num 数量 * @return {@link R} */ @GetMapping("/kill") public R addToSeckill( @RequestParam("killId") String killId, @RequestParam("key") String key, @RequestParam("num") Integer num) { // 实现类只是带有两个注解方法,返回 null(因为全部交给切面托管了) String orderSn = seckillService.kill(killId, key, num); if (StringUtils.isEmpty(orderSn)) { return R.error(); } return R.ok().setData(orderSn); }
解决方案
通过参数传递数据,通过捕获异常保证业务逻辑(离谱但有用)
加载全部内容