php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 660|回复: 0

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

[复制链接]

3142

主题

3152

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7956
贡献
0
注册时间
2021-4-14
最后登录
2024-11-22
在线时间
763 小时
QQ
发表于 2022-3-29 18:41:55 | 显示全部楼层 |阅读模式
场景描述
在秒杀微服务中,笔者在需要各种校验前端传来的参数后,通过 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]
解决方案
通过参数传递数据,通过捕获异常保证业务逻辑(离谱但有用)
image.png
image.png





上一篇:Android BLE 蓝牙开发——扫码枪基于BLESSED
下一篇:弹簧系统三维可视化
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-22 09:41 , Processed in 0.305411 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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

快速回复 返回顶部 返回列表