feat(REQ-4196) - 调整 Starter 中,当配置启用 meta-feign 时,异常走 MQ 的问题

This commit is contained in:
wangli 2025-06-03 18:26:29 +08:00
parent d66f6bbb6c
commit 8050652e3e

View File

@ -83,6 +83,10 @@ public class ComplexInvokeClient implements Client {
@Override
public Response execute(Request request, Request.Options options) throws IOException {
log.debug("ComplexInvokeClient execute... Url: {}", request.url());
if (useMetaFeign(request)) {
log.debug("use meta feign client: {}", request.url());
return feignClient.execute(request, options);
}
RpcInvokeModeEnum currentInvokeModeEnum = getInvokeMode(request);
log.debug("[{}] invoke url: {}", currentInvokeModeEnum, request.url());
if (Objects.equals(SYNC, currentInvokeModeEnum)) {
@ -91,6 +95,10 @@ public class ComplexInvokeClient implements Client {
return asyncInvoke(request, options);
}
private boolean useMetaFeign(Request request) {
return starterProperties.getMetaFeign() && request.requestTemplate().feignTarget().type().getName().contains("cn.axzo.workflow.client.feign");
}
/**
* 发送 RPC 调用动作的 MQ 事件
*
@ -117,12 +125,12 @@ public class ComplexInvokeClient implements Client {
Map<String, Collection<String>> headers = request.headers();
headers.forEach((k, v) -> log.debug("ComplexInvokeClient Header: {} = {}", k, v));
return Response.builder()
.status(HttpStatus.OK.value())
.reason(HttpStatus.OK.getReasonPhrase())
.headers(headers)
.request(request)
.body(body)
.build();
.status(HttpStatus.OK.value())
.reason(HttpStatus.OK.getReasonPhrase())
.headers(headers)
.request(request)
.body(body)
.build();
} catch (BeansException e) {
return feignClient.execute(request, options);
}
@ -218,7 +226,7 @@ public class ComplexInvokeClient implements Client {
private RpcInvokeModeEnum getInvokeMode(Request request) {
Collection<String> invokeModel = request.headers().getOrDefault(STARTER_INVOKE_MODE,
Collections.singletonList(starterProperties.getInvokeMode().name()));
Collections.singletonList(starterProperties.getInvokeMode().name()));
if (CollectionUtils.isEmpty(invokeModel)) {
return starterProperties.getInvokeMode();
} else if (invokeModel.size() > 1) {