Feature使用过程中遇到的一个坑
直接上代码
1 List<String> res = pageList; 2 3 // 从callExtensionParamMap中解析出 4 Long bosId = Objects.isNull(callExtensionParamMap.get(BOS_ID_KEY)) ? null: (Long) callExtensionParamMap.get(BOS_ID_KEY); 5 Long productInstanceId = Objects.isNull(callExtensionParamMap.get(PRODUCT_INSTANCE_ID_KEY)) ? null: (Long) callExtensionParamMap.get(PRODUCT_INSTANCE_ID_KEY); 6 Long productId = Objects.isNull(callExtensionParamMap.get(PRODUCT_ID_KEY)) ? null: (Long) callExtensionParamMap.get(PRODUCT_ID_KEY); 7 String tCode = Objects.isNull(callExtensionParamMap.get(T_CODE_KEY)) ? null: (String) callExtensionParamMap.get(T_CODE_KEY); 8 Long vid = Objects.isNull(callExtensionParamMap.get(VID_KEY)) ? null: (Long) callExtensionParamMap.get(VID_KEY); 9 Integer vidType = Objects.isNull(callExtensionParamMap.get(VID_TYPE_KEY)) ? null: (Integer) callExtensionParamMap.get(VID_TYPE_KEY); 10 11 UnfoldBaseRequest request = new UnfoldBaseRequest(); 12 request.setBosId(bosId); 13 request.setProductInstanceId(productInstanceId); 14 request.setProductId(productId); 15 request.setTCode(tCode); 16 request.setVid(vid); 17 request.setVidType(vidType); 18 request.setWidList(widList); 19 20 List<Future<Map<Long, UnfoldBaseResponse>>> futures = new ArrayList<>(domains.size()); 21 22 for (String domain : domains) { 23 24 25 request.setDomain(domain); 26 27 Future<Map<Long, UnfoldBaseResponse>> future = commonExecutor.submit(new Callable<Map<Long, UnfoldBaseResponse>>() { 28 @Override 29 public Map<Long, UnfoldBaseResponse> call() throws Exception { 30 return userIntegration.getUserSearchInfo(request); 31 } 32 }); 33 34 futures.add(future); 35 36 } 37 38 for (Future<Map<Long, UnfoldBaseResponse>> future: futures) { 39 try { 40 Map<Long, UnfoldBaseResponse> unfoldBaseResponseMap = future.get(); 41 42 res = populateProperty(res, unfoldBaseResponseMap); 43 } catch (Exception e) { 44 log.warn("crm组装信息异常", e); 45 } 46 }
结果发现第30行里所有的请求domain都是一致的,我相信有经验的已经看出了端倪。
没错,因为submit方法里传入的是同一个request对象,那么就会以最后一个设置的domain作为最终请求的值去发起请求
修改方式:将Request创建放在for循环里面即可
1 // 从callExtensionParamMap中解析出 2 Long bosId = Objects.isNull(callExtensionParamMap.get(BOS_ID_KEY)) ? null: (Long) callExtensionParamMap.get(BOS_ID_KEY); 3 Long productInstanceId = Objects.isNull(callExtensionParamMap.get(PRODUCT_INSTANCE_ID_KEY)) ? null: (Long) callExtensionParamMap.get(PRODUCT_INSTANCE_ID_KEY); 4 Long productId = Objects.isNull(callExtensionParamMap.get(PRODUCT_ID_KEY)) ? null: (Long) callExtensionParamMap.get(PRODUCT_ID_KEY); 5 String tCode = Objects.isNull(callExtensionParamMap.get(T_CODE_KEY)) ? null: (String) callExtensionParamMap.get(T_CODE_KEY); 6 Long vid = Objects.isNull(callExtensionParamMap.get(VID_KEY)) ? null: (Long) callExtensionParamMap.get(VID_KEY); 7 Integer vidType = Objects.isNull(callExtensionParamMap.get(VID_TYPE_KEY)) ? null: (Integer) callExtensionParamMap.get(VID_TYPE_KEY); 8 9 List<Future<Map<Long, UnfoldBaseResponse>>> futures = new ArrayList<>(domains.size()); 10 11 for (String domain : domains) { 12 13 UnfoldBaseRequest request = new UnfoldBaseRequest(); 14 request.setBosId(bosId); 15 request.setProductInstanceId(productInstanceId); 16 request.setProductId(productId); 17 request.setTCode(tCode); 18 request.setVid(vid); 19 request.setVidType(vidType); 20 request.setWidList(widList); 21 request.setDomain(domain); 22 23 Future<Map<Long, UnfoldBaseResponse>> future = commonExecutor.submit(new Callable<Map<Long, UnfoldBaseResponse>>() { 24 @Override 25 public Map<Long, UnfoldBaseResponse> call() throws Exception { 26 return userIntegration.getUserSearchInfo(request); 27 } 28 }); 29 30 futures.add(future); 31 32 } 33 34 for (Future<Map<Long, UnfoldBaseResponse>> future: futures) { 35 try { 36 Map<Long, UnfoldBaseResponse> unfoldBaseResponseMap = future.get(); 37 38 res = populateProperty(res, unfoldBaseResponseMap); 39 } catch (Exception e) { 40 log.warn("crm组装信息异常", e); 41 } 42 }
posted on 2022-01-07 10:41 Iversonstear 阅读(44) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!