QueueController.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package com.backendsys.modules.queue.controller;
  2. import com.backendsys.modules.common.config.security.annotations.Anonymous;
  3. import com.backendsys.modules.queue.entity.QueuePosition;
  4. import com.backendsys.modules.queue.entity.QueueRequest;
  5. import com.backendsys.modules.queue.service.QueueService;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.web.bind.annotation.*;
  8. @RestController
  9. public class QueueController {
  10. @Autowired
  11. private QueueService queueService;
  12. /**
  13. * 提交请求并加入队列
  14. */
  15. @Anonymous
  16. @PostMapping("/api/queue/submit")
  17. public String submitRequest() {
  18. QueueRequest request = new QueueRequest();
  19. int position = queueService.enqueue("taskQueue", request);
  20. return "Your request has been submitted. You are at position " + position + " in the queue. request id: " + request.getId();
  21. }
  22. /**
  23. * 启动处理队列中的请求
  24. */
  25. @Anonymous
  26. @GetMapping("/api/queue/startProcessing")
  27. public String startProcessing() {
  28. queueService.startProcessing("taskQueue");
  29. return "Processing has started.";
  30. }
  31. /**
  32. * 查询队列
  33. */
  34. @Anonymous
  35. @GetMapping("/api/queue/position")
  36. public String getPosition(@RequestParam String requestId) {
  37. QueuePosition positionInfo = queueService.getPosition("taskQueue", requestId);
  38. if (positionInfo.getPosition() == -1) {
  39. return "Request not found.";
  40. } else {
  41. return "Your request is at position " + positionInfo.getPosition() + " out of " + positionInfo.getTotal() + " in the queue.";
  42. }
  43. }
  44. }