elevator(P1): bounded parallel delete, listFloor page, bind; Feign callWithContext

Made-with: Cursor

Former-commit-id: fe571aaadc
This commit is contained in:
反编译工作区
2026-04-25 08:29:53 +08:00
parent 25052441aa
commit 1b2e6a18c6
6 changed files with 321 additions and 49 deletions
@@ -5,6 +5,7 @@ import cn.cloudwalk.cloud.session.extend.DefaultExtendContext;
import cn.cloudwalk.elevator.context.CloudWalkExtendContextValue;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
@@ -76,4 +77,22 @@ public class FeignThreadLocalUtil {
public static void setRequestHeader(CloudwalkCallContext context) {
set(getDefaultRequestHeader(context));
}
/**
* 在有界线程池等子线程中调用 Feign 前,必须为当前线程设置与 {@code context} 一致的请求头 ThreadLocal
* 调用结束后恢复/清理,避免池化线程泄漏或串扰。
*/
public static <T> T callWithContext(CloudwalkCallContext context, Callable<T> action) throws Exception {
Map<String, String> previous = get();
try {
setRequestHeader(context);
return action.call();
} finally {
if (previous != null) {
set(previous);
} else {
remove();
}
}
}
}