diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorBean.java b/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorBean.java new file mode 100644 index 00000000..9a0024f3 --- /dev/null +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorBean.java @@ -0,0 +1,23 @@ +package tech.powerjob.worker.extension.processor; + +import lombok.Getter; +import lombok.Setter; +import lombok.experimental.Accessors; +import tech.powerjob.worker.core.processor.sdk.BasicProcessor; + +/** + * 处理器对象,理论上只需要返回 BasicProcessor,但为了扩展性还是选择封装为对象 + * + * @author tjq + * @since 2023/1/17 + */ +@Getter +@Setter +@Accessors(chain = true) +public class ProcessorBean { + + /** + * 真正用来执行逻辑的处理器对象 + */ + private transient BasicProcessor processor; +} diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorDefinition.java b/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorDefinition.java new file mode 100644 index 00000000..41029571 --- /dev/null +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorDefinition.java @@ -0,0 +1,48 @@ +package tech.powerjob.worker.extension.processor; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Objects; + +/** + * 处理器定义 + * + * @author tjq + * @since 2023/1/17 + */ +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class ProcessorDefinition implements Serializable { + + /** + * 后台配置的处理器类型 + */ + private String processorType; + /** + * 后台配置的处理器信息 + */ + private String processorInfo; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + ProcessorDefinition that = (ProcessorDefinition) o; + return Objects.equals(processorType, that.processorType) && Objects.equals(processorInfo, that.processorInfo); + } + + @Override + public int hashCode() { + return Objects.hash(processorType, processorInfo); + } +} diff --git a/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorFactory.java b/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorFactory.java new file mode 100644 index 00000000..00669877 --- /dev/null +++ b/powerjob-worker/src/main/java/tech/powerjob/worker/extension/processor/ProcessorFactory.java @@ -0,0 +1,19 @@ +package tech.powerjob.worker.extension.processor; + +/** + * 处理器工厂 + * 考虑到当前是一个百花齐放的生态,各种 IOC 框架层出不穷。PowerJob 决定在 4.3.0 剥离对 Spring 的强依赖,并允许开发者自定义 Bean 的初始化逻辑 + * + * @author tjq + * @since 2023/1/17 + */ +public interface ProcessorFactory { + + /** + * 根据处理器定义构建处理器对象 + * 注意:Processor 为单例对象,即 PowerJob 对每一个 ProcessorBean 只调用一次 build 方法 + * @param processorDefinition 处理器定义 + * @return ProcessorBean + */ + ProcessorBean build(ProcessorDefinition processorDefinition); +}