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";
|
}
|
}
|