测试前清空Redis,恢复数据库数据,查看ActiveMQ控制台情况。
1. 单用户测试
2. 多线程模拟多用户测试
修改15-seckill-web中GoodsController中的seckill方法
//接收用户秒杀请求,通过多线程模拟多用户访问
@PostMapping("/seckill/goods/{random}/{id}")
public @ResponseBody ReturnObject seckill(@PathVariable("random") String random,@PathVariable("id") Integer id){
    //最佳实践,线程的个数等于cpu的个数或者2倍,如果过多,会导致上下文切换过于频繁
    int cpu = 8;
    ExecutorService executorService = Executors.newFixedThreadPool(cpu * 2);
    for (int i = 0; i < 1000000; i++) {
        Integer uid = i;
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                seckillTest(uid,random,id);
            }
        });
    }
    return seckillTest(888888,random,id);
}
//执行秒杀
/*@PostMapping("/seckill/goods/{random}/{id}")
public @ResponseBody ReturnObject seckill(@PathVariable("random") String random,@PathVariable("id") Integer id){*/
public ReturnObject seckillTest(Integer uid,String random,Integer id){
3. 测试下单事务是否生效
在15-seckill-service中将OrderServiceImpl中的addOrders方法中构建一个异常

将线程并发量降低一些,1w
4. 设置ActiveMQ消费者的个数
设置消费者的个数,可以解决消息堆积的问题,发消息太多太快,导致消费太慢,获取最终秒杀结果延时比较明显,一般也是cpu个数的2倍
在15-seckill-service中的ActiveMQConfig配置类中加一个配置即可
