feat: support powerjob method handler

This commit is contained in:
tjq 2023-06-11 15:40:50 +08:00
parent 8ecc5768c7
commit 8953ecc74f
3 changed files with 22 additions and 12 deletions

View File

@ -1,25 +1,31 @@
package tech.powerjob.samples.tester; package tech.powerjob.samples.tester;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import tech.powerjob.worker.annotation.PowerJob; import tech.powerjob.worker.annotation.PowerJobHandler;
import tech.powerjob.worker.core.processor.TaskContext; import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.log.OmsLogger; import tech.powerjob.worker.log.OmsLogger;
@Component @Component
public class SpringMethodProcessorService { public class SpringMethodProcessorService {
@PowerJob("test") @PowerJobHandler(name = "testEmptyReturn")
public String test(TaskContext context) { public void test(TaskContext context) {
OmsLogger omsLogger = context.getOmsLogger(); OmsLogger omsLogger = context.getOmsLogger();
omsLogger.warn("测试日志"); omsLogger.warn("测试日志");
return null;
} }
@PowerJob("test1") @PowerJobHandler(name = "testNormalReturn")
public String test1(TaskContext context) { public String test1(TaskContext context) {
OmsLogger omsLogger = context.getOmsLogger(); OmsLogger omsLogger = context.getOmsLogger();
omsLogger.warn("测试日志"); omsLogger.warn("测试日志");
return "测试日志"; return "testNormalReturn";
}
@PowerJobHandler(name = "testThrowException")
public String testThrowException(TaskContext context) {
OmsLogger omsLogger = context.getOmsLogger();
omsLogger.warn("testThrowException");
throw new IllegalArgumentException("test");
} }
} }

View File

@ -5,17 +5,21 @@ import java.lang.annotation.*;
/** /**
* 方法级别的power-job调度 * 方法级别的power-job调度
* <a href="https://github.com/PowerJob/PowerJob/pull/610">PR#610</a>
*
* @author <a href="https://github.com/vannewang">vannewang</a>
* @since 2023/4/6
*/ */
@Target({ElementType.METHOD}) @Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Inherited @Inherited
public @interface PowerJob { public @interface PowerJobHandler {
/** /**
* handler name * handler name
*/ */
String value(); String name();

View File

@ -3,7 +3,7 @@ package tech.powerjob.worker.processor.impl;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import tech.powerjob.worker.annotation.PowerJob; import tech.powerjob.worker.annotation.PowerJobHandler;
import tech.powerjob.worker.extension.processor.ProcessorBean; import tech.powerjob.worker.extension.processor.ProcessorBean;
import tech.powerjob.worker.extension.processor.ProcessorDefinition; import tech.powerjob.worker.extension.processor.ProcessorDefinition;
import tech.powerjob.worker.processor.MethodBasicProcessor; import tech.powerjob.worker.processor.MethodBasicProcessor;
@ -45,17 +45,17 @@ public class BuildInSpringMethodProcessorFactory extends AbstractBuildInSpringPr
log.info("[ProcessorFactory] can't parse processorDefinition, this processor can't load by 'BuildInSpringMethodProcessorFactory'"); log.info("[ProcessorFactory] can't parse processorDefinition, this processor can't load by 'BuildInSpringMethodProcessorFactory'");
return null; return null;
} }
String[] split = processorInfo.split("#"); String[] split = processorInfo.split(DELIMITER);
String methodName = split[1]; String methodName = split[1];
String className = split[0]; String className = split[0];
Object bean = getBean(className,applicationContext); Object bean = getBean(className,applicationContext);
Method[] methods = bean.getClass().getDeclaredMethods(); Method[] methods = bean.getClass().getDeclaredMethods();
for (Method method : methods) { for (Method method : methods) {
PowerJob powerJob = method.getAnnotation(PowerJob.class); PowerJobHandler powerJob = method.getAnnotation(PowerJobHandler.class);
if (powerJob == null) { if (powerJob == null) {
continue; continue;
} }
String name = powerJob.value(); String name = powerJob.name();
//匹配到和页面定义相同的methodName //匹配到和页面定义相同的methodName
if (!name.equals(methodName)) { if (!name.equals(methodName)) {
continue; continue;