List<CompletableFuture<Map<String, Object>>> lists = contents.stream()
.map(item -> CompletableFuture.supplyAsync(() -> {
Map<String, Object> resultOne = new HashMap<>();
// 获取input
String input = item.substring(item.indexOf(startStep) + startStep.length());
resultOne.put("input", input);
// 获取traceId
String traceId = parseItemTraceId(item);
String time = parseItemTime(item);
resultOne.put("traceId", traceId);
// 查询skill_trace_log中的改traceId执行结果
String slsOutputQuery = buildSlsForQuery("output", traceId, "wrapAsSafe StreamObserver");
getLogsRequest.setQuery(slsOutputQuery);
getLogsRequest.setOffset(0L);
getLogsRequest.setLine(100L);
GetLogsResponse logsWithOptionsOutput = null;
try {
logsWithOptionsOutput = client.getLogsWithOptions(slsConfigDataSource.getTenantConfig().getProject(), slsConfigDataSource.getTenantConfig().getLogstoreBiz(), getLogsRequest, headers, runtime);
} catch (Exception e) {
e.printStackTrace();
}
if (logsWithOptionsOutput != null) {
Map<String, ?> res = logsWithOptions.getBody().get(0);
resultOne.put("userId", res.get("userId"));
resultOne.put("output", res.get("res"));
}
resultOne.put("time", time);
System.out.println(resultOne);
return resultOne;
}, threadPoolExecutor))
.collect(Collectors.toList());
// 等待所有的CompletableFuture完成并获取结果
result = lists.stream()
.map(CompletableFuture::join) // join是非阻塞的
.collect(Collectors.toList());
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通