智慧保安后台管理-外网项目备份
Administrator
2022-04-12 068c5b7cbf239d6aae87fe8ae6239f1165f76431
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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";
    }
}