feat: define ProcessorFactory

This commit is contained in:
tjq 2023-01-17 22:00:35 +08:00
parent d6f3ae6c44
commit fbd75a6ec7
3 changed files with 90 additions and 0 deletions

View File

@ -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;
}

View File

@ -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);
}
}

View File

@ -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);
}