refactor(live): 清理心跳与上麦逻辑中的死代码和无效依赖
LiveMicGoUpCmdExe: - 删除遗留的 main 方法和 createAgoraTokenGoUp 死方法(后者每次调用都 new 线程池,有资源泄漏风险) - handleRoomDailyTask 提前短路:非邀请类型或非房主邀请时直接 return,避免无效 HTTP 调用 - roomMemberDTO 查询后移到确认需要时才执行 UserHeartbeatListener: - 移除 userProfileClient 无效注入(逻辑已注释) - 删除 getRoomProfileDto 死方法(上次重构后已无调用) - 清理 StringUtils/RegexConstant/Profile/ResultResponse/RedisTemplate 等无用 import Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> (cherry picked from commit 6f210e34c83a10721ea5f772f5951ed0547c8e46)
This commit is contained in:
parent
4eb2f8330d
commit
e36a28cf85
@ -27,8 +27,7 @@ import org.springframework.data.redis.core.RedisTemplate;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上麦克风.
|
* 上麦克风.
|
||||||
@ -77,20 +76,21 @@ public class LiveMicGoUpCmdExe {
|
|||||||
|
|
||||||
private void handleRoomDailyTask(MicUpDownCmd cmd) {
|
private void handleRoomDailyTask(MicUpDownCmd cmd) {
|
||||||
try {
|
try {
|
||||||
|
if (!cmd.eventTypeEqInvite()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
RoomProfileDTO roomProfile = roomManagerClient.getById(cmd.getRoomId()).getBody();
|
RoomProfileDTO roomProfile = roomManagerClient.getById(cmd.getRoomId()).getBody();
|
||||||
if (Objects.isNull(roomProfile)) {
|
if (Objects.isNull(roomProfile)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(roomProfile.getUserId(), cmd.getInviterId())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
RoomMemberDTO roomMemberDTO = roomMemberClient.getMember(cmd.getRoomId(), cmd.getReqUserId()).getBody();
|
RoomMemberDTO roomMemberDTO = roomMemberClient.getMember(cmd.getRoomId(), cmd.getReqUserId()).getBody();
|
||||||
if (Objects.isNull(roomMemberDTO)) {
|
if (Objects.isNull(roomMemberDTO)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
handleInviteMicTask(roomProfile.getUserId(), cmd.requiredReqUserId(), RoomDailyTaskCode.ROOM_OWNER_INVITE_MIC);
|
||||||
boolean invite = cmd.eventTypeEqInvite();
|
|
||||||
if (invite && Objects.equals(roomProfile.getUserId(), cmd.getInviterId())) {
|
|
||||||
Long roomOwnerId = roomProfile.getUserId();
|
|
||||||
handleInviteMicTask(roomOwnerId, cmd.requiredReqUserId(), RoomDailyTaskCode.ROOM_OWNER_INVITE_MIC);
|
|
||||||
}
|
|
||||||
} catch (Exception exception){
|
} catch (Exception exception){
|
||||||
log.error("handleRoomDailyTask exception: {}", exception.getMessage());
|
log.error("handleRoomDailyTask exception: {}", exception.getMessage());
|
||||||
}
|
}
|
||||||
@ -126,60 +126,4 @@ public class LiveMicGoUpCmdExe {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 异步拿声网token,5分钟拿不到就返回默认一串字符串
|
|
||||||
* @param cmd
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private String createAgoraTokenGoUp(MicUpDownCmd cmd) {
|
|
||||||
ExecutorService executor = Executors.newSingleThreadExecutor();
|
|
||||||
AtomicReference<String> agoraToken = new AtomicReference<>("BaHrIypJdFWqwWtoZLToRucRyoGrVgYCONBFvGynmlJsevFYsWBfEIcaWUUGijQBjycTtmSvkmBINoSltJMmgiPeBnkaWErixaxg");
|
|
||||||
Future<?> future = executor.submit(() -> {
|
|
||||||
agoraToken.set(trtcClient.createAgoraTokenGoUp(cmd.getReqUserId(), cmd.getRoomId().toString()).getBody());
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
|
||||||
future.get(3, TimeUnit.SECONDS); // 等待最多3秒
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
// 处理超时
|
|
||||||
log.warn("上麦获取声网token超时: {}", e.getMessage());
|
|
||||||
} catch (InterruptedException | ExecutionException e) {
|
|
||||||
// 处理其他异常
|
|
||||||
log.warn("上麦获取声网token其他异常: {}", e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
executor.shutdown();
|
|
||||||
return agoraToken.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
System.out.println("开始等待...");
|
|
||||||
ExecutorService executor = Executors.newSingleThreadExecutor();
|
|
||||||
AtomicReference<String> agoraToken = new AtomicReference<>("");
|
|
||||||
Future<?> future = executor.submit(() -> {
|
|
||||||
// 等待6秒
|
|
||||||
try {
|
|
||||||
Thread.sleep(1000);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
agoraToken.set("拿到值啦!!!!!");
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
|
||||||
future.get(5, TimeUnit.SECONDS); // 等待最多3秒
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
// 处理超时
|
|
||||||
log.warn("上麦获取声网token超时: {}", e);
|
|
||||||
} catch (InterruptedException | ExecutionException e) {
|
|
||||||
// 处理其他异常
|
|
||||||
log.warn("上麦获取声网token其他异常: {}", e);
|
|
||||||
}
|
|
||||||
|
|
||||||
executor.shutdown();
|
|
||||||
System.out.println(agoraToken.get());
|
|
||||||
System.out.println("结束...");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import com.red.circle.component.mq.service.Action;
|
|||||||
import com.red.circle.component.mq.service.ConsumerMessage;
|
import com.red.circle.component.mq.service.ConsumerMessage;
|
||||||
import com.red.circle.component.mq.service.MessageListener;
|
import com.red.circle.component.mq.service.MessageListener;
|
||||||
import com.red.circle.component.redis.service.RedisService;
|
import com.red.circle.component.redis.service.RedisService;
|
||||||
import com.red.circle.framework.dto.ResultResponse;
|
|
||||||
import com.red.circle.live.app.dto.cmd.HeartbeatStatusEnum;
|
import com.red.circle.live.app.dto.cmd.HeartbeatStatusEnum;
|
||||||
import com.red.circle.live.domain.gateway.LiveMicrophoneGateway;
|
import com.red.circle.live.domain.gateway.LiveMicrophoneGateway;
|
||||||
import com.red.circle.live.domain.live.LiveMicrophone;
|
import com.red.circle.live.domain.live.LiveMicrophone;
|
||||||
@ -23,7 +22,6 @@ import com.red.circle.other.inner.endpoint.live.RoomManagerClient;
|
|||||||
import com.red.circle.other.inner.endpoint.live.RoomMemberClient;
|
import com.red.circle.other.inner.endpoint.live.RoomMemberClient;
|
||||||
import com.red.circle.other.inner.endpoint.task.RoomDailyTaskClient;
|
import com.red.circle.other.inner.endpoint.task.RoomDailyTaskClient;
|
||||||
import com.red.circle.other.inner.endpoint.user.user.UserOnlineClient;
|
import com.red.circle.other.inner.endpoint.user.user.UserOnlineClient;
|
||||||
import com.red.circle.other.inner.endpoint.user.user.UserProfileClient;
|
|
||||||
import com.red.circle.other.inner.enums.live.RoomUserRolesEnum;
|
import com.red.circle.other.inner.enums.live.RoomUserRolesEnum;
|
||||||
import com.red.circle.other.inner.enums.task.RoomDailyTaskCode;
|
import com.red.circle.other.inner.enums.task.RoomDailyTaskCode;
|
||||||
import com.red.circle.other.inner.model.cmd.live.MemberRolesQryCmd;
|
import com.red.circle.other.inner.model.cmd.live.MemberRolesQryCmd;
|
||||||
@ -35,9 +33,7 @@ import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
|
|||||||
import com.red.circle.tool.core.collection.CollectionUtils;
|
import com.red.circle.tool.core.collection.CollectionUtils;
|
||||||
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
import com.red.circle.tool.core.date.ZonedDateTimeAsiaRiyadhUtils;
|
||||||
import com.red.circle.tool.core.parse.DataTypeUtils;
|
import com.red.circle.tool.core.parse.DataTypeUtils;
|
||||||
import com.red.circle.tool.core.regex.RegexConstant;
|
|
||||||
import com.red.circle.tool.core.sequence.IdWorkerUtils;
|
import com.red.circle.tool.core.sequence.IdWorkerUtils;
|
||||||
import com.red.circle.tool.core.text.StringUtils;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@ -47,8 +43,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.context.annotation.Profile;
|
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -63,7 +57,6 @@ import org.springframework.stereotype.Component;
|
|||||||
public class UserHeartbeatListener implements MessageListener {
|
public class UserHeartbeatListener implements MessageListener {
|
||||||
|
|
||||||
private final UserOnlineClient userOnlineClient;
|
private final UserOnlineClient userOnlineClient;
|
||||||
private final UserProfileClient userProfileClient;
|
|
||||||
private final RoomManagerClient roomManagerClient;
|
private final RoomManagerClient roomManagerClient;
|
||||||
private final LiveMicCacheService liveMicCacheService;
|
private final LiveMicCacheService liveMicCacheService;
|
||||||
private final LiveMicrophoneGateway liveMicrophoneGateway;
|
private final LiveMicrophoneGateway liveMicrophoneGateway;
|
||||||
@ -207,23 +200,6 @@ public class UserHeartbeatListener implements MessageListener {
|
|||||||
refreshMicActiveTime(event, roomProfile, userProfile);
|
refreshMicActiveTime(event, roomProfile, userProfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
private RoomProfileDTO getRoomProfileDto(Long roomId) {
|
|
||||||
String roomAccount = liveRoomCacheService.getRoomAccount(roomId);
|
|
||||||
if (Objects.isNull(roomAccount)) {
|
|
||||||
RoomProfileDTO roomProfile = roomManagerClient.getById(roomId).getBody();
|
|
||||||
if (Objects.nonNull(roomProfile)) {
|
|
||||||
liveRoomCacheService.save(roomProfile.getRoomAccount(), roomId);
|
|
||||||
roomAccount = roomProfile.getRoomAccount();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RoomProfileDTO roomProfile = new RoomProfileDTO();
|
|
||||||
roomProfile.setId(roomId);
|
|
||||||
roomProfile.setRoomAccount(roomAccount);
|
|
||||||
|
|
||||||
return roomProfile;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addRoomOnlineUser(UserProfileDTO userProfile, RoomProfileDTO roomProfile) {
|
private void addRoomOnlineUser(UserProfileDTO userProfile, RoomProfileDTO roomProfile) {
|
||||||
|
|
||||||
liveMicrophoneGateway.addRoomOnlineUser(roomProfile.getId(),
|
liveMicrophoneGateway.addRoomOnlineUser(roomProfile.getId(),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user