|
@@ -30,27 +30,36 @@ public class PowerJobProcessorLoader implements ProcessorLoader {
|
|
|
|
|
|
@Override
|
|
|
public ProcessorBean load(ProcessorDefinition definition) {
|
|
|
- return def2Bean.computeIfAbsent(definition, ignore -> {
|
|
|
- final String processorType = definition.getProcessorType();
|
|
|
- log.info("[ProcessorFactory] start to load Processor: {}", definition);
|
|
|
- for (ProcessorFactory pf : processorFactoryList) {
|
|
|
- final String pfName = pf.getClass().getSimpleName();
|
|
|
- if (!Optional.ofNullable(pf.supportTypes()).orElse(Collections.emptySet()).contains(processorType)) {
|
|
|
- log.info("[ProcessorFactory] [{}] can't load type={}, skip!", pfName, processorType);
|
|
|
- continue;
|
|
|
- }
|
|
|
- log.info("[ProcessorFactory] [{}] try to load processor: {}", pfName, definition);
|
|
|
- try {
|
|
|
- ProcessorBean processorBean = pf.build(definition);
|
|
|
- if (processorBean != null) {
|
|
|
- log.info("[ProcessorFactory] [{}] load processor successfully: {}", pfName, definition);
|
|
|
- return processorBean;
|
|
|
- }
|
|
|
- } catch (Throwable t) {
|
|
|
- log.error("[ProcessorFactory] [{}] load processor failed: {}", pfName, definition, t);
|
|
|
+
|
|
|
+ ProcessorBean pBean = def2Bean.computeIfAbsent(definition, ignore -> buildProcessorBean(definition));
|
|
|
+
|
|
|
+ if (pBean.isStable()) {
|
|
|
+ return pBean;
|
|
|
+ }
|
|
|
+
|
|
|
+ return buildProcessorBean(definition);
|
|
|
+ }
|
|
|
+
|
|
|
+ private ProcessorBean buildProcessorBean(ProcessorDefinition definition) {
|
|
|
+ final String processorType = definition.getProcessorType();
|
|
|
+ log.info("[ProcessorFactory] start to load Processor: {}", definition);
|
|
|
+ for (ProcessorFactory pf : processorFactoryList) {
|
|
|
+ final String pfName = pf.getClass().getSimpleName();
|
|
|
+ if (!Optional.ofNullable(pf.supportTypes()).orElse(Collections.emptySet()).contains(processorType)) {
|
|
|
+ log.info("[ProcessorFactory] [{}] can't load type={}, skip!", pfName, processorType);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ log.info("[ProcessorFactory] [{}] try to load processor: {}", pfName, definition);
|
|
|
+ try {
|
|
|
+ ProcessorBean processorBean = pf.build(definition);
|
|
|
+ if (processorBean != null) {
|
|
|
+ log.info("[ProcessorFactory] [{}] load processor successfully: {}", pfName, definition);
|
|
|
+ return processorBean;
|
|
|
}
|
|
|
+ } catch (Throwable t) {
|
|
|
+ log.error("[ProcessorFactory] [{}] load processor failed: {}", pfName, definition, t);
|
|
|
}
|
|
|
- throw new PowerJobException("fetch Processor failed, please check your processorType and processorInfo config");
|
|
|
- });
|
|
|
+ }
|
|
|
+ throw new PowerJobException("fetch Processor failed, please check your processorType and processorInfo config");
|
|
|
}
|
|
|
}
|