This commit is contained in:
张良(004796)
2024-01-25 17:16:23 +08:00
parent 31036e69af
commit 7874e38d17
19 changed files with 326 additions and 415 deletions

View File

@@ -2,9 +2,9 @@ package com.ruoyi.cai.mq.consumer;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.cai.manager.UserForbidManager;
import com.ruoyi.cai.mq.CommonDelayTypeEnum;
import com.ruoyi.cai.mq.config.CommonDelayMqConfig;
import com.ruoyi.cai.mq.dto.CommonDelayDto;
import com.ruoyi.cai.mq.CommonDelayMqConfig;
import com.ruoyi.cai.ws.job.CheckTimeOutJob;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,8 +13,6 @@ import org.springframework.stereotype.Component;
@Slf4j
@Component
public class CommonDelayMqConsumer {
@Autowired
private CheckTimeOutJob checkTimeOutJob;
@Autowired
private UserForbidManager userForbidManager;
@@ -23,12 +21,18 @@ public class CommonDelayMqConsumer {
public void checkTimeOutMq(String message) {
log.info("CommonDelayMqConsumer: " + message);
CommonDelayDto dto = JSON.parseObject(message, CommonDelayDto.class);
switch (dto.getType()){
case 1:
checkTimeOutJob.deal(dto.getRoomId());
break;
case 2:
userForbidManager.checkAll();
CommonDelayTypeEnum typeEnum = dto.getTypeEnum();
if(typeEnum == null){
log.warn("延时任务执行失败,未检测到正确的类型 dto={}",JSON.toJSONString(dto));
return;
}
switch (typeEnum){
case USER_FORBID:
try {
userForbidManager.checkExpire(dto.getForbidId());
}catch (Exception e){
log.error("检查用户封禁状态失败!需要开发确认!",e);
}
break;
default:
break;

View File

@@ -0,0 +1,36 @@
package com.ruoyi.cai.mq.consumer;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.config.RoomCheckDelayMqConfig;
import com.ruoyi.cai.ws.job.JobResp;
import com.ruoyi.cai.ws.job.RoomCheckJobService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class RoomCheckDelayMqConsumer {
@Autowired
private AmqpProducer amqpProducer;
@Autowired
private RoomCheckJobService roomCheckJobService;
@RabbitListener(queues = RoomCheckDelayMqConfig.QUEUE_NAME
,containerFactory = "customContainerFactory")
public void sendRoomCheck(String roomIdStr) {
log.info("开始执行房间检测: roomId={}",roomIdStr);
try {
Long roomId = Long.valueOf(roomIdStr);
JobResp resp = roomCheckJobService.checkRoom(roomId);
if(resp.isNextCreateJob()){
// 1分钟后继续执行
amqpProducer.sendRoomCheckDelay(roomIdStr,60);
}
}catch (Exception e){
log.error("每分钟定时检测房间失败! roomId={}",roomIdStr);
}
}
}

View File

@@ -1,23 +1,22 @@
package com.ruoyi.cai.mq.consumer;
import com.ruoyi.cai.mq.AmqpProducer;
import com.ruoyi.cai.mq.CheckTimeOutMqConfig;
import com.ruoyi.cai.mq.config.RoomSettleDelayMqConfig;
import com.ruoyi.cai.ws.service.SettleService;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.index.qual.SameLen;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class CheckTimeOutMqConsumer {
public class RoomSettleDelayMqConsumer {
@Autowired
private SettleService settleService;
@Autowired
private AmqpProducer amqpProducer;
@RabbitListener(queues = CheckTimeOutMqConfig.QUEUE_NAME
@RabbitListener(queues = RoomSettleDelayMqConfig.QUEUE_NAME
,containerFactory = "customContainerFactory")
public void checkTimeOutMq(String message) {
log.info("开始执行预扣费: " + message);
@@ -25,7 +24,7 @@ public class CheckTimeOutMqConsumer {
boolean next = settleService.withholdingFee(Long.valueOf(message));
if(next){
// 1分钟后继续执行
amqpProducer.sendCheckTimeOut(message,60);
amqpProducer.sendRoomSettleDelay(message,60);
}
}catch (Exception e){
log.error("每分钟定时扣费失败!",e);