fix - starter same method name invoke error
This commit is contained in:
parent
8838462f8a
commit
fd735dd90a
@ -5,6 +5,7 @@ import cn.axzo.workflow.common.model.response.mq.WorkflowEngineStarterRpcInvokeD
|
||||
import cn.axzo.workflow.starter.WorkflowEngineStarterProperties;
|
||||
import cn.axzo.workflow.starter.common.exception.WorkflowEngineStarterException;
|
||||
import cn.axzo.workflow.starter.mq.retry.producer.RpcInvokeEventProducer;
|
||||
import cn.axzo.workflow.starter.util.MD5;
|
||||
import cn.azxo.framework.common.model.CommonResponse;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import feign.Client;
|
||||
@ -106,7 +107,7 @@ public class ComplexInvokeClient implements Client {
|
||||
event.setMethodName(metadata.method().getName());
|
||||
|
||||
Class<?>[] parameterTypes = metadata.method().getParameterTypes();
|
||||
event.setParameterTypesMd5(StringUtils.collectionToCommaDelimitedString(Arrays.stream(parameterTypes).map(Class::getName).collect(Collectors.toList())));
|
||||
event.setParameterTypesMd5(MD5.encrypt(StringUtils.collectionToCommaDelimitedString(Arrays.stream(parameterTypes).map(Class::getName).collect(Collectors.toList()))));
|
||||
|
||||
List<String> args = new ArrayList<>();
|
||||
event.setParameters(args);
|
||||
|
||||
@ -10,6 +10,7 @@ import cn.axzo.workflow.starter.WorkflowEngineStarterProperties;
|
||||
import cn.axzo.workflow.starter.api.WorkflowCoreService;
|
||||
import cn.axzo.workflow.starter.api.WorkflowManageService;
|
||||
import cn.axzo.workflow.starter.common.exception.WorkflowNoMethodException;
|
||||
import cn.axzo.workflow.starter.util.MD5;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.SneakyThrows;
|
||||
import org.slf4j.Logger;
|
||||
@ -100,9 +101,9 @@ public class WorkflowEngineStarterRetryEventListener implements EventHandler, In
|
||||
|
||||
Method[] methods = coreService.getDeclaredMethods();
|
||||
for (Method method : methods) {
|
||||
String parameterStr = StringUtils.collectionToCommaDelimitedString(Arrays.stream(method.getParameterTypes()).map(Class::getName).collect(Collectors.toList()));
|
||||
Map<String, InterfaceMapping> methodCache = multiMethodCache.getOrDefault(parameterStr, new HashMap<>());
|
||||
methodCache.put(parameterStr, new InterfaceMapping(workflowCoreService, method));
|
||||
String parameterTypesMd5 = MD5.encrypt(StringUtils.collectionToCommaDelimitedString(Arrays.stream(method.getParameterTypes()).map(Class::getName).collect(Collectors.toList())));
|
||||
Map<String, InterfaceMapping> methodCache = multiMethodCache.getOrDefault(method.getName(), new HashMap<>());
|
||||
methodCache.put(parameterTypesMd5, new InterfaceMapping(workflowCoreService, method));
|
||||
multiMethodCache.put(method.getName(), methodCache);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
package cn.axzo.workflow.starter.util;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
/**
|
||||
* Starter 专用的 MD5小工具
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2025-03-05 16:45
|
||||
*/
|
||||
public class MD5 {
|
||||
|
||||
public static String encrypt(String data) {
|
||||
if (data == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
// 获取 MD5 算法实例
|
||||
MessageDigest md = MessageDigest.getInstance("MD5");
|
||||
// 将输入字符串转换为字节数组并进行加密
|
||||
byte[] digest = md.digest(data.getBytes(StandardCharsets.UTF_8));
|
||||
|
||||
// 将字节数组转换为 BigInteger
|
||||
BigInteger bigInt = new BigInteger(1, digest);
|
||||
// 将 BigInteger 转换为十六进制字符串
|
||||
String hashText = bigInt.toString(16);
|
||||
// 不足 32 位时前面补 0
|
||||
while (hashText.length() < 32) {
|
||||
hashText = "0" + hashText;
|
||||
}
|
||||
return hashText;
|
||||
} catch (NoSuchAlgorithmException e) {
|
||||
// 处理算法不可用的异常
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String encrypt = encrypt("123");
|
||||
System.out.println("encrypt = " + encrypt);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user