feat: add WorkerHeartbeatEvent

This commit is contained in:
tjq 2022-09-09 22:45:05 +08:00
parent 519213ad4a
commit b6de5aa563
2 changed files with 47 additions and 0 deletions

View File

@ -19,6 +19,8 @@ import tech.powerjob.server.core.handler.impl.WorkerRequestHttpHandler;
import tech.powerjob.server.core.instance.InstanceLogService;
import tech.powerjob.server.core.instance.InstanceManager;
import tech.powerjob.server.core.workflow.WorkflowInstanceManager;
import tech.powerjob.server.monitor.events.handler.WorkerHeartbeatEvent;
import tech.powerjob.server.monitor.monitors.ServerMonitor;
import tech.powerjob.server.persistence.remote.model.ContainerInfoDO;
import tech.powerjob.server.persistence.remote.model.JobInfoDO;
import tech.powerjob.server.persistence.remote.repository.ContainerInfoRepository;
@ -45,6 +47,8 @@ import java.util.stream.Collectors;
@Component
public class WorkerRequestHandler {
@Resource
private ServerMonitor serverMonitor;
@Resource
private Environment environment;
@Resource
@ -74,6 +78,11 @@ public class WorkerRequestHandler {
* @param heartbeat 心跳包
*/
public void onReceiveWorkerHeartbeat(WorkerHeartbeat heartbeat) {
WorkerHeartbeatEvent event = new WorkerHeartbeatEvent();
BeanUtils.copyProperties(heartbeat, event);
serverMonitor.record(event.setScore(heartbeat.getSystemMetrics().getScore()));
WorkerClusterManagerService.updateStatus(heartbeat);
}

View File

@ -0,0 +1,38 @@
package tech.powerjob.server.monitor.events.handler;
import lombok.Setter;
import lombok.experimental.Accessors;
import tech.powerjob.server.common.SJ;
import tech.powerjob.server.monitor.Event;
/**
* worker 心跳事件监控
*
* @author tjq
* @since 2022/9/9
*/
@Setter
@Accessors(chain = true)
public class WorkerHeartbeatEvent implements Event {
private String appName;
private String version;
private String protocol;
private String tag;
private String workerAddress;
private Integer score;
@Override
public String type() {
return "MONITOR_LOGGER_WORKER_HEART_BEAT";
}
@Override
public String message() {
return SJ.MONITOR_JOINER.join(appName, version, protocol, tag, workerAddress, score);
}
}