mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
refactor: optimize extension package
This commit is contained in:
parent
5e9935fed4
commit
fc57226d3a
@ -1,9 +1,10 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.alarm;
|
package tech.powerjob.server.core.alarm;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.module.Alarm;
|
import tech.powerjob.server.extension.alarm.Alarm;
|
||||||
import tech.powerjob.server.extension.Alarmable;
|
import tech.powerjob.server.extension.alarm.AlarmTarget;
|
||||||
|
import tech.powerjob.server.extension.alarm.Alarmable;
|
||||||
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
|
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Queues;
|
import com.google.common.collect.Queues;
|
||||||
@ -12,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 报警服务
|
* 报警服务
|
||||||
@ -41,10 +43,18 @@ public class AlarmCenter {
|
|||||||
public void alarmFailed(Alarm alarm, List<UserInfoDO> targetUserList) {
|
public void alarmFailed(Alarm alarm, List<UserInfoDO> targetUserList) {
|
||||||
POOL.execute(() -> BEANS.forEach(alarmable -> {
|
POOL.execute(() -> BEANS.forEach(alarmable -> {
|
||||||
try {
|
try {
|
||||||
alarmable.onFailed(alarm, targetUserList);
|
alarmable.onFailed(alarm, targetUserList.stream().map(AlarmCenter::convertUserInfo2AlarmTarget).collect(Collectors.toList()));
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
log.warn("[AlarmCenter] alarm failed.", e);
|
log.warn("[AlarmCenter] alarm failed.", e);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static AlarmTarget convertUserInfo2AlarmTarget(UserInfoDO userInfoDO) {
|
||||||
|
AlarmTarget alarmTarget = new AlarmTarget();
|
||||||
|
BeanUtils.copyProperties(userInfoDO, alarmTarget);
|
||||||
|
|
||||||
|
alarmTarget.setName(userInfoDO.getUsername());
|
||||||
|
return alarmTarget;
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.alarm.impl;
|
package tech.powerjob.server.core.alarm.impl;
|
||||||
|
|
||||||
import com.google.common.cache.Cache;
|
import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
@ -14,9 +14,9 @@ import tech.powerjob.common.exception.PowerJobException;
|
|||||||
import tech.powerjob.common.utils.NetUtils;
|
import tech.powerjob.common.utils.NetUtils;
|
||||||
import tech.powerjob.server.common.PowerJobServerConfigKey;
|
import tech.powerjob.server.common.PowerJobServerConfigKey;
|
||||||
import tech.powerjob.server.common.SJ;
|
import tech.powerjob.server.common.SJ;
|
||||||
import tech.powerjob.server.extension.Alarmable;
|
import tech.powerjob.server.extension.alarm.AlarmTarget;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.module.Alarm;
|
import tech.powerjob.server.extension.alarm.Alarmable;
|
||||||
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
|
import tech.powerjob.server.extension.alarm.Alarm;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -46,7 +46,7 @@ public class DingTalkAlarmService implements Alarmable {
|
|||||||
private static final String EMPTY_TAG = "EMPTY";
|
private static final String EMPTY_TAG = "EMPTY";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(Alarm alarm, List<UserInfoDO> targetUserList) {
|
public void onFailed(Alarm alarm, List<AlarmTarget> targetUserList) {
|
||||||
if (dingTalkUtils == null) {
|
if (dingTalkUtils == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.alarm.impl;
|
package tech.powerjob.server.core.alarm.impl;
|
||||||
|
|
||||||
import com.dingtalk.api.DefaultDingTalkClient;
|
import com.dingtalk.api.DefaultDingTalkClient;
|
||||||
import com.dingtalk.api.DingTalkClient;
|
import com.dingtalk.api.DingTalkClient;
|
@ -1,10 +1,10 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.alarm.impl;
|
package tech.powerjob.server.core.alarm.impl;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
|
import tech.powerjob.server.extension.alarm.AlarmTarget;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.module.Alarm;
|
import tech.powerjob.server.extension.alarm.Alarm;
|
||||||
import tech.powerjob.server.extension.Alarmable;
|
import tech.powerjob.server.extension.alarm.Alarmable;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.core.env.Environment;
|
||||||
@ -36,7 +36,7 @@ public class MailAlarmService implements Alarmable {
|
|||||||
private String from;
|
private String from;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(Alarm alarm, List<UserInfoDO> targetUserList) {
|
public void onFailed(Alarm alarm, List<AlarmTarget> targetUserList) {
|
||||||
if (CollectionUtils.isEmpty(targetUserList) || javaMailSender == null || StringUtils.isEmpty(from)) {
|
if (CollectionUtils.isEmpty(targetUserList) || javaMailSender == null || StringUtils.isEmpty(from)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -44,7 +44,7 @@ public class MailAlarmService implements Alarmable {
|
|||||||
SimpleMailMessage sm = new SimpleMailMessage();
|
SimpleMailMessage sm = new SimpleMailMessage();
|
||||||
try {
|
try {
|
||||||
sm.setFrom(from);
|
sm.setFrom(from);
|
||||||
sm.setTo(targetUserList.stream().map(UserInfoDO::getEmail).filter(Objects::nonNull).toArray(String[]::new));
|
sm.setTo(targetUserList.stream().map(AlarmTarget::getEmail).filter(Objects::nonNull).toArray(String[]::new));
|
||||||
sm.setSubject(alarm.fetchTitle());
|
sm.setSubject(alarm.fetchTitle());
|
||||||
sm.setText(alarm.fetchContent());
|
sm.setText(alarm.fetchContent());
|
||||||
|
|
@ -1,11 +1,11 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.alarm.impl;
|
package tech.powerjob.server.core.alarm.impl;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import tech.powerjob.common.OmsConstant;
|
import tech.powerjob.common.OmsConstant;
|
||||||
import tech.powerjob.common.utils.HttpUtils;
|
import tech.powerjob.common.utils.HttpUtils;
|
||||||
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
|
import tech.powerjob.server.extension.alarm.AlarmTarget;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.module.Alarm;
|
import tech.powerjob.server.extension.alarm.Alarm;
|
||||||
import tech.powerjob.server.extension.Alarmable;
|
import tech.powerjob.server.extension.alarm.Alarmable;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import okhttp3.MediaType;
|
import okhttp3.MediaType;
|
||||||
import okhttp3.RequestBody;
|
import okhttp3.RequestBody;
|
||||||
@ -29,7 +29,7 @@ public class WebHookAlarmService implements Alarmable {
|
|||||||
private static final String HTTPS_PROTOCOL_PREFIX = "https://";
|
private static final String HTTPS_PROTOCOL_PREFIX = "https://";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailed(Alarm alarm, List<UserInfoDO> targetUserList) {
|
public void onFailed(Alarm alarm, List<AlarmTarget> targetUserList) {
|
||||||
if (CollectionUtils.isEmpty(targetUserList)) {
|
if (CollectionUtils.isEmpty(targetUserList)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.alarm.module;
|
package tech.powerjob.server.core.alarm.module;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import tech.powerjob.server.extension.alarm.Alarm;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务执行失败告警对象
|
* 任务执行失败告警对象
|
@ -1,7 +1,8 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.alarm.module;
|
package tech.powerjob.server.core.alarm.module;
|
||||||
|
|
||||||
import tech.powerjob.common.model.PEWorkflowDAG;
|
import tech.powerjob.common.model.PEWorkflowDAG;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import tech.powerjob.server.extension.alarm.Alarm;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工作流执行失败告警对象
|
* 工作流执行失败告警对象
|
@ -17,8 +17,8 @@ import tech.powerjob.server.common.timewheel.holder.HashedWheelTimerHolder;
|
|||||||
import tech.powerjob.server.common.utils.SpringUtils;
|
import tech.powerjob.server.common.utils.SpringUtils;
|
||||||
import tech.powerjob.server.core.service.UserService;
|
import tech.powerjob.server.core.service.UserService;
|
||||||
import tech.powerjob.server.core.workflow.WorkflowInstanceManager;
|
import tech.powerjob.server.core.workflow.WorkflowInstanceManager;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.AlarmCenter;
|
import tech.powerjob.server.core.alarm.AlarmCenter;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.module.JobInstanceAlarm;
|
import tech.powerjob.server.core.alarm.module.JobInstanceAlarm;
|
||||||
import tech.powerjob.server.persistence.remote.model.InstanceInfoDO;
|
import tech.powerjob.server.persistence.remote.model.InstanceInfoDO;
|
||||||
import tech.powerjob.server.persistence.remote.model.JobInfoDO;
|
import tech.powerjob.server.persistence.remote.model.JobInfoDO;
|
||||||
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
|
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl;
|
package tech.powerjob.server.core.lock;
|
||||||
|
|
||||||
import tech.powerjob.common.utils.CommonUtils;
|
import tech.powerjob.common.utils.CommonUtils;
|
||||||
import tech.powerjob.common.utils.NetUtils;
|
import tech.powerjob.common.utils.NetUtils;
|
@ -26,8 +26,8 @@ import tech.powerjob.server.core.service.UserService;
|
|||||||
import tech.powerjob.server.core.service.WorkflowNodeHandleService;
|
import tech.powerjob.server.core.service.WorkflowNodeHandleService;
|
||||||
import tech.powerjob.server.core.uid.IdGenerateService;
|
import tech.powerjob.server.core.uid.IdGenerateService;
|
||||||
import tech.powerjob.server.core.workflow.algorithm.WorkflowDAGUtils;
|
import tech.powerjob.server.core.workflow.algorithm.WorkflowDAGUtils;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.AlarmCenter;
|
import tech.powerjob.server.core.alarm.AlarmCenter;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.module.WorkflowInstanceAlarm;
|
import tech.powerjob.server.core.alarm.module.WorkflowInstanceAlarm;
|
||||||
import tech.powerjob.server.persistence.remote.model.*;
|
import tech.powerjob.server.persistence.remote.model.*;
|
||||||
import tech.powerjob.server.persistence.remote.repository.JobInfoRepository;
|
import tech.powerjob.server.persistence.remote.repository.JobInfoRepository;
|
||||||
import tech.powerjob.server.persistence.remote.repository.WorkflowInfoRepository;
|
import tech.powerjob.server.persistence.remote.repository.WorkflowInfoRepository;
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
package tech.powerjob.server.extension;
|
|
||||||
|
|
||||||
import tech.powerjob.server.persistence.remote.model.UserInfoDO;
|
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.module.Alarm;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 报警接口
|
|
||||||
*
|
|
||||||
* @author tjq
|
|
||||||
* @since 2020/4/19
|
|
||||||
*/
|
|
||||||
public interface Alarmable {
|
|
||||||
|
|
||||||
void onFailed(Alarm alarm, List<UserInfoDO> targetUserList);
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.alarm.module;
|
package tech.powerjob.server.extension.alarm;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import tech.powerjob.common.OmsConstant;
|
import tech.powerjob.common.OmsConstant;
|
@ -0,0 +1,37 @@
|
|||||||
|
package tech.powerjob.server.extension.alarm;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报警目标
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2023/7/16
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AlarmTarget implements Serializable {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
|
private String phone;
|
||||||
|
/**
|
||||||
|
* 邮箱地址
|
||||||
|
*/
|
||||||
|
private String email;
|
||||||
|
/**
|
||||||
|
* webHook
|
||||||
|
*/
|
||||||
|
private String webHook;
|
||||||
|
/**
|
||||||
|
* 扩展字段
|
||||||
|
*/
|
||||||
|
private String extra;
|
||||||
|
|
||||||
|
private Map<String, Objects> attributes;
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package tech.powerjob.server.extension.alarm;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 报警接口
|
||||||
|
*
|
||||||
|
* @author tjq
|
||||||
|
* @since 2020/4/19
|
||||||
|
*/
|
||||||
|
public interface Alarmable {
|
||||||
|
|
||||||
|
void onFailed(Alarm alarm, List<AlarmTarget> alarmTargets);
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.workerfilter;
|
package tech.powerjob.server.remote.worker.filter;
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.workerfilter;
|
package tech.powerjob.server.remote.worker.filter;
|
||||||
|
|
||||||
import tech.powerjob.server.extension.WorkerFilter;
|
import tech.powerjob.server.extension.WorkerFilter;
|
||||||
import tech.powerjob.server.persistence.remote.model.JobInfoDO;
|
import tech.powerjob.server.persistence.remote.model.JobInfoDO;
|
@ -1,4 +1,4 @@
|
|||||||
package tech.powerjob.server.extension.defaultimpl.workerfilter;
|
package tech.powerjob.server.remote.worker.filter;
|
||||||
|
|
||||||
import tech.powerjob.common.model.SystemMetrics;
|
import tech.powerjob.common.model.SystemMetrics;
|
||||||
import tech.powerjob.server.extension.WorkerFilter;
|
import tech.powerjob.server.extension.WorkerFilter;
|
@ -1,12 +1,9 @@
|
|||||||
package tech.powerjob.server.test;
|
package tech.powerjob.server.test;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import tech.powerjob.server.extension.defaultimpl.alarm.impl.DingTalkUtils;
|
import tech.powerjob.server.core.alarm.impl.DingTalkUtils;
|
||||||
import com.google.common.collect.Lists;
|
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 测试钉钉消息工具
|
* 测试钉钉消息工具
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user