|
@@ -11,6 +11,7 @@ import com.ym.mec.im.message.TicketExpiredMessage;
|
|
|
import com.ym.pojo.ScheduledTaskInfo;
|
|
|
import com.ym.service.RoomService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.scheduling.annotation.SchedulingConfigurer;
|
|
|
import org.springframework.scheduling.config.ScheduledTask;
|
|
@@ -28,26 +29,22 @@ import java.util.concurrent.ConcurrentHashMap;
|
|
|
@Service
|
|
|
public class ScheduleManager implements SchedulingConfigurer {
|
|
|
private ScheduledTaskRegistrar taskRegistrar;
|
|
|
-
|
|
|
@Autowired
|
|
|
RoomProperties roomProperties;
|
|
|
-
|
|
|
@Autowired
|
|
|
WhiteBoardProperties whiteBoardProperties;
|
|
|
-
|
|
|
@Autowired
|
|
|
IMHelper imHelper;
|
|
|
-
|
|
|
@Autowired
|
|
|
RoomMemberDao roomMemberDao;
|
|
|
-
|
|
|
@Autowired
|
|
|
RoomDao roomDao;
|
|
|
-
|
|
|
@Autowired
|
|
|
RoomService roomService;
|
|
|
+ @Autowired
|
|
|
+ RedissonClient redissonClient;
|
|
|
|
|
|
- private ConcurrentHashMap<String, ScheduledTask> schedulingTasks = new ConcurrentHashMap<>();
|
|
|
+// private ConcurrentHashMap<String, ScheduledTask> schedulingTasks = new ConcurrentHashMap<>();
|
|
|
private ConcurrentHashMap<String, ScheduledTask> roomCacheTasks = new ConcurrentHashMap<>();
|
|
|
private ConcurrentHashMap<String, Date> userIMOfflineMap = new ConcurrentHashMap<>();
|
|
|
private ScheduledDelayTask userIMOfflineKickTask = new ScheduledDelayTask(new Runnable() {
|
|
@@ -95,35 +92,38 @@ public class ScheduleManager implements SchedulingConfigurer {
|
|
|
|
|
|
public void addTask(ScheduledTaskInfo task) {
|
|
|
log.info("add speech task: {}", task);
|
|
|
- schedulingTasks.put(task.getTicket(), taskRegistrar.scheduleFixedDelayTask(new ScheduledDelayTask(new Runnable() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- log.info("speech task expired, execute task: {}", task);
|
|
|
- TicketExpiredMessage msg = new TicketExpiredMessage();
|
|
|
- msg.setFromUserId(task.getApplyUserId());
|
|
|
- msg.setToUserId(task.getTargetUserId());
|
|
|
- msg.setTicket(task.getTicket());
|
|
|
- try {
|
|
|
- imHelper.publishMessage(task.getTargetUserId(), task.getRoomId(), msg);
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("msg send error: {}", e.getMessage());
|
|
|
- }
|
|
|
- ScheduledTask scheduledTask = schedulingTasks.remove(task.getTicket());
|
|
|
- scheduledTask.cancel();
|
|
|
+ redissonClient.getBucket(task.getTicket()).set(task);
|
|
|
+ /*ScheduledTask scheduledTask = taskRegistrar.scheduleFixedDelayTask(new ScheduledDelayTask(() -> {
|
|
|
+ log.info("speech task expired, execute task: {}", task);
|
|
|
+ TicketExpiredMessage msg = new TicketExpiredMessage();
|
|
|
+ msg.setFromUserId(task.getApplyUserId());
|
|
|
+ msg.setToUserId(task.getTargetUserId());
|
|
|
+ msg.setTicket(task.getTicket());
|
|
|
+ try {
|
|
|
+ imHelper.publishMessage(task.getTargetUserId(), task.getRoomId(), msg);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("msg send error: {}", e.getMessage());
|
|
|
}
|
|
|
- }, roomProperties.getTaskTtl() * 60, roomProperties.getTaskTtl(), task)));
|
|
|
+ ScheduledTask scheduledTask1 = schedulingTasks.remove(task.getTicket());
|
|
|
+ scheduledTask1.cancel();
|
|
|
+ }, roomProperties.getTaskTtl() * 60, roomProperties.getTaskTtl(), task));*/
|
|
|
}
|
|
|
|
|
|
public ScheduledTaskInfo executeTask(String key) {
|
|
|
- ScheduledTask scheduledTask = schedulingTasks.remove(key);
|
|
|
- if (scheduledTask == null) {
|
|
|
+ if (!redissonClient.getBucket(key).isExists()) {
|
|
|
log.error("task not exist: key={}", key);
|
|
|
throw new ApiException(ErrorEnum.ERR_APPLY_TICKET_INVALID);
|
|
|
}
|
|
|
- ScheduledDelayTask task = (ScheduledDelayTask)scheduledTask.getTask();
|
|
|
- ScheduledTaskInfo taskInfo = task.getScheduledTaskInfo();
|
|
|
- scheduledTask.cancel();
|
|
|
- log.info("execute speech task: {}", taskInfo);
|
|
|
- return taskInfo;
|
|
|
+ return (ScheduledTaskInfo)redissonClient.getBucket(key).get();
|
|
|
+// ScheduledTask scheduledTask = schedulingTasks.remove(key);
|
|
|
+// if (scheduledTask == null) {
|
|
|
+// log.error("task not exist: key={}", key);
|
|
|
+// throw new ApiException(ErrorEnum.ERR_APPLY_TICKET_INVALID);
|
|
|
+// }
|
|
|
+// ScheduledDelayTask task = (ScheduledDelayTask)scheduledTask.getTask();
|
|
|
+// ScheduledTaskInfo taskInfo = task.getScheduledTaskInfo();
|
|
|
+// scheduledTask.cancel();
|
|
|
+// log.info("execute speech task: {}", taskInfo);
|
|
|
+// return taskInfo;
|
|
|
}
|
|
|
}
|