diff --git a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/ComplexInvokeClient.java b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/ComplexInvokeClient.java index 2e3f733a6..2f290bf81 100644 --- a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/ComplexInvokeClient.java +++ b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/ComplexInvokeClient.java @@ -15,6 +15,7 @@ import feign.Response; import lombok.SneakyThrows; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.http.HttpStatus; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.DeleteMapping; @@ -42,7 +43,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Objects; -import java.util.Optional; import java.util.Queue; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -64,11 +64,11 @@ public class ComplexInvokeClient implements Client { private final Logger log = LoggerFactory.getLogger(ComplexInvokeClient.class); private final WorkflowEngineStarterProperties starterProperties; - private final Optional optEventProducer; + private final ObjectProvider optEventProducer; private final Client feignClient; public ComplexInvokeClient(WorkflowEngineStarterProperties starterProperties, - Optional optEventProducer, + ObjectProvider optEventProducer, Client feignClient) { this.starterProperties = starterProperties; this.optEventProducer = optEventProducer; //(RpcInvokeEventProducer) eventProducer; @@ -93,10 +93,14 @@ public class ComplexInvokeClient implements Client { * @param options */ private Response asyncInvoke(Request request, Request.Options options) throws IOException { - if (!optEventProducer.isPresent()) { + EventProducer ifAvailable = optEventProducer.getIfAvailable(() -> null); + if (ifAvailable == null) { return feignClient.execute(request, options); } - optEventProducer.ifPresent(eventProducer -> { +// if (!optEventProducer.isPresent()) { +// return feignClient.execute(request, options); +// } + optEventProducer.ifAvailable(eventProducer -> { WorkflowEngineStarterRpcInvokeDTO event = new WorkflowEngineStarterRpcInvokeDTO(); MethodMetadata metadata = request.requestTemplate().methodMetadata(); event.setClassName(metadata.targetType().getName()); diff --git a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/WorkflowEngineStarterFeignConfiguration.java b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/WorkflowEngineStarterFeignConfiguration.java index 5d610f981..4c0aab4f5 100644 --- a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/WorkflowEngineStarterFeignConfiguration.java +++ b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/feign/ext/WorkflowEngineStarterFeignConfiguration.java @@ -15,7 +15,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; import org.springframework.beans.factory.ObjectFactory; -import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.cloud.openfeign.FeignBuilderCustomizer; import org.springframework.cloud.openfeign.support.ResponseEntityDecoder; @@ -30,9 +30,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.Collection; import java.util.Collections; import java.util.Objects; -import java.util.Optional; -//import static cn.axzo.framework.web.filter.BasicRecordExceptionFilter.MICRO_SERVER_RECORD_ERROR_GET_PARAM_NAME; import static cn.axzo.workflow.client.config.WorkflowRequestInterceptor.HEADER_API_VERSION; import static cn.axzo.workflow.client.config.WorkflowRequestInterceptor.HEADER_HTTP_CLIENT; import static cn.axzo.workflow.client.config.WorkflowRequestInterceptor.HEADER_HTTP_CLIENT_VALUE; @@ -57,9 +55,9 @@ public class WorkflowEngineStarterFeignConfiguration { @Bean public Client complexInvokeClient(WorkflowEngineStarterProperties starterProperties, - @Qualifier("workflowEngineStarterEventProducer") EventProducer eventProducer, + ObjectProvider producerObjectProvider, Client feignClient) { - return new ComplexInvokeClient(starterProperties, Optional.ofNullable(eventProducer), feignClient); + return new ComplexInvokeClient(starterProperties, producerObjectProvider, feignClient); } @Bean