| | |
| | | package org.springblade.modules.rabbitmq.controller; |
| | | |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.modules.rabbitmq.config.MQsender; |
| | | import org.springblade.modules.rabbitmq.redis.TaskKey; |
| | | import org.springblade.modules.rabbitmq.redis.RedisService; |
| | | import org.springblade.modules.rabbitmq.vo.Man; |
| | | import org.springblade.modules.rabbitmq.vo.Task; |
| | | import org.springblade.modules.rabbitmq.vo.TaskMessage; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.Random; |
| | | |
| | | /** |
| | | * 消息发送 |
| | | * @author zhongrj |
| | | */ |
| | | @RestController |
| | | @AllArgsConstructor |
| | | @RequestMapping("/rabbitmq") |
| | | public class SendMessageController { |
| | | |
| | | private static int count = 0; |
| | | |
| | | private final MQsender mQsender; |
| | | |
| | | private final RedisService redisService; |
| | | |
| | | |
| | | @GetMapping("/sendDirectMessage") |
| | | public String sendDirectMessage() { |
| | | String messageData = "test message, hello!"; |
| | | mQsender.send(messageData); |
| | | return "ok"; |
| | | } |
| | | |
| | | /** |
| | | * 模拟抢单 |
| | | * @return |
| | | */ |
| | | @GetMapping("/createTask") |
| | | public String createTask(Long id ,Integer num) { |
| | | //创建任务 |
| | | Task task = new Task(); |
| | | task.setId(id); |
| | | task.setNum(num); |
| | | task.setTaskName("测试"); |
| | | //将任务数量和对应的id 存入redis |
| | | redisService.set(TaskKey.getTaskStock,""+task.getId(),task.getNum()); |
| | | //返回 |
| | | return "ok"; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 模拟抢单(不同人员同时抢) |
| | | * @return |
| | | */ |
| | | @GetMapping("/testSend") |
| | | public String testSend(Long id) { |
| | | //模拟创建人员 |
| | | Man man = new Man(); |
| | | man.setId(System.currentTimeMillis() + new Random().nextInt(1000000)); |
| | | man.setUsername("task"+ count); |
| | | // 预减库存 |
| | | long stack = redisService.decr(TaskKey.getTaskStock,""+id); |
| | | if (stack<0){ |
| | | return "已结束"; |
| | | } |
| | | //入队列 |
| | | TaskMessage taskMessage = new TaskMessage(); |
| | | taskMessage.setTaskId(id); |
| | | taskMessage.setManId(man.getId()); |
| | | //发送消息 |
| | | mQsender.sendTaskMessage(taskMessage); |
| | | //返回 |
| | | return "ok"; |
| | | } |
| | | } |
| | | //package org.springblade.modules.rabbitmq.controller; |
| | | // |
| | | //import lombok.AllArgsConstructor; |
| | | //import org.springblade.modules.rabbitmq.config.MQsender; |
| | | //import org.springblade.modules.rabbitmq.redis.TaskKey; |
| | | //import org.springblade.modules.rabbitmq.redis.RedisService; |
| | | //import org.springblade.modules.rabbitmq.vo.Man; |
| | | //import org.springblade.modules.rabbitmq.vo.Task; |
| | | //import org.springblade.modules.rabbitmq.vo.TaskMessage; |
| | | //import org.springframework.web.bind.annotation.GetMapping; |
| | | //import org.springframework.web.bind.annotation.RequestMapping; |
| | | //import org.springframework.web.bind.annotation.RestController; |
| | | // |
| | | //import java.util.Random; |
| | | // |
| | | ///** |
| | | // * 消息发送 |
| | | // * @author zhongrj |
| | | // */ |
| | | //@RestController |
| | | //@AllArgsConstructor |
| | | //@RequestMapping("/rabbitmq") |
| | | //public class SendMessageController { |
| | | // |
| | | // private static int count = 0; |
| | | // |
| | | // private final MQsender mQsender; |
| | | // |
| | | // private final RedisService redisService; |
| | | // |
| | | // |
| | | // @GetMapping("/sendDirectMessage") |
| | | // public String sendDirectMessage() { |
| | | // String messageData = "test message, hello!"; |
| | | // mQsender.send(messageData); |
| | | // return "ok"; |
| | | // } |
| | | // |
| | | // /** |
| | | // * 模拟抢单 |
| | | // * @return |
| | | // */ |
| | | // @GetMapping("/createTask") |
| | | // public String createTask(Long id ,Integer num) { |
| | | // //创建任务 |
| | | // Task task = new Task(); |
| | | // task.setId(id); |
| | | // task.setNum(num); |
| | | // task.setTaskName("测试"); |
| | | // //将任务数量和对应的id 存入redis |
| | | // redisService.set(TaskKey.getTaskStock,""+task.getId(),task.getNum()); |
| | | // //返回 |
| | | // return "ok"; |
| | | // } |
| | | // |
| | | // |
| | | // /** |
| | | // * 模拟抢单(不同人员同时抢) |
| | | // * @return |
| | | // */ |
| | | // @GetMapping("/testSend") |
| | | // public String testSend(Long id) { |
| | | // //模拟创建人员 |
| | | // Man man = new Man(); |
| | | // man.setId(System.currentTimeMillis() + new Random().nextInt(1000000)); |
| | | // man.setUsername("task"+ count); |
| | | // // 预减库存 |
| | | // long stack = redisService.decr(TaskKey.getTaskStock,""+id); |
| | | // if (stack<0){ |
| | | // return "已结束"; |
| | | // } |
| | | // //入队列 |
| | | // TaskMessage taskMessage = new TaskMessage(); |
| | | // taskMessage.setTaskId(id); |
| | | // taskMessage.setManId(man.getId()); |
| | | // //发送消息 |
| | | // mQsender.sendTaskMessage(taskMessage); |
| | | // //返回 |
| | | // return "ok"; |
| | | // } |
| | | //} |