feat: remove all circular-references by aware

This commit is contained in:
tjq 2023-03-04 21:03:22 +08:00
parent 5ddaa33f47
commit 5985c04997
5 changed files with 61 additions and 12 deletions

View File

@ -22,6 +22,7 @@ import tech.powerjob.server.persistence.remote.model.InstanceInfoDO;
import tech.powerjob.server.persistence.remote.model.JobInfoDO;
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
import tech.powerjob.server.persistence.remote.repository.InstanceInfoRepository;
import tech.powerjob.server.remote.aware.TransportServiceAware;
import tech.powerjob.server.remote.transporter.impl.ServerURLFactory;
import tech.powerjob.server.remote.transporter.TransportService;
import tech.powerjob.server.remote.worker.WorkerClusterQueryService;
@ -41,7 +42,7 @@ import java.util.concurrent.TimeUnit;
@Slf4j
@Service
@RequiredArgsConstructor
public class InstanceManager {
public class InstanceManager implements TransportServiceAware {
private final AlarmCenter alarmCenter;
@ -53,10 +54,13 @@ public class InstanceManager {
private final WorkflowInstanceManager workflowInstanceManager;
private final TransportService transportService;
private final WorkerClusterQueryService workerClusterQueryService;
/**
* 基础组件通过 aware 注入避免循环依赖
*/
private TransportService transportService;
/**
* 更新任务状态
* ********************************************
@ -229,4 +233,8 @@ public class InstanceManager {
alarmCenter.alarmFailed(content, userList);
}
@Override
public void setTransportService(TransportService transportService) {
this.transportService = transportService;
}
}

View File

@ -0,0 +1,15 @@
package tech.powerjob.server.remote.aware;
import tech.powerjob.server.common.aware.PowerJobAware;
import tech.powerjob.server.remote.transporter.TransportService;
/**
* TransportServiceAware
*
* @author tjq
* @since 2023/3/4
*/
public interface TransportServiceAware extends PowerJobAware {
void setTransportService(TransportService transportService);
}

View File

@ -8,6 +8,7 @@ import tech.powerjob.common.serialize.JsonUtils;
import tech.powerjob.remote.framework.actor.Actor;
import tech.powerjob.remote.framework.actor.Handler;
import tech.powerjob.remote.framework.actor.ProcessType;
import tech.powerjob.server.remote.aware.TransportServiceAware;
import tech.powerjob.server.remote.server.election.Ping;
import tech.powerjob.server.remote.server.redirector.RemoteProcessReq;
import tech.powerjob.server.remote.server.redirector.RemoteRequestProcessor;
@ -24,13 +25,9 @@ import static tech.powerjob.common.RemoteConstant.*;
@Slf4j
@Component
@Actor(path = S4S_PATH)
public class FriendActor {
public class FriendActor implements TransportServiceAware {
private final TransportService transportService;
public FriendActor(TransportService transportService) {
this.transportService = transportService;
}
private TransportService transportService;
/**
* 处理存活检测的请求
@ -54,4 +51,9 @@ public class FriendActor {
}
return response;
}
@Override
public void setTransportService(TransportService transportService) {
this.transportService = transportService;
}
}

View File

@ -0,0 +1,27 @@
package tech.powerjob.server.support;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import tech.powerjob.server.remote.aware.TransportServiceAware;
import tech.powerjob.server.remote.transporter.TransportService;
import java.util.List;
/**
* TransportServiceAwareProcessor
*
* @author tjq
* @since 2023/3/4
*/
@Slf4j
@Component
public class TransportServiceAwareProcessor {
public TransportServiceAwareProcessor(TransportService transportService, List<TransportServiceAware> transportServiceAwares) {
log.info("[TransportServiceAwareProcessor] current transportService: {}", transportService);
transportServiceAwares.forEach(aware -> {
aware.setTransportService(transportService);
log.info("[TransportServiceAwareProcessor] set transportService for: {} successfully", aware);
});
}
}

View File

@ -13,9 +13,6 @@ spring.servlet.multipart.file-size-threshold=0
spring.servlet.multipart.max-file-size=209715200
spring.servlet.multipart.max-request-size=209715200
# temporary skip circular references check
spring.main.allow-circular-references=true
###### PowerJob transporter configuration ######
oms.transporter.active.protocols=AKKA,HTTP
oms.transporter.main.protocol=HTTP