php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
搜索资源  
php中文网 | cnphp.com 资源中心 【Spring AOP】暴力打通两个切面之间的通信: image.png

【Spring AOP】暴力打通两个切面之间的通信: image.png

 

【Spring AOP】暴力打通两个切面之间的通信:
场景描述
在秒杀微服务中,笔者在需要各种校验前端传来的参数后,通过 Redis 加锁限流(切面A)并返回,最后封装订单数据推送到 RabbitMQ 消息队列(切面B)做善后工作。

问题:如何将 切面 A 的数据传递 给切面B 处理呢?
[mw_shl_code=java,true]/**
* 添加到秒杀流程
*
* @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);
}

[/mw_shl_code]
解决方案
通过参数传递数据,通过捕获异常保证业务逻辑(离谱但有用)

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )51LA统计

GMT+8, 2024-4-20 15:39 , Processed in 0.161567 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

返回顶部