apache / apache/apisix-java-plugin-runner

bug: 在路由上配置了一个前置插件ext-plugin-pre-req和后置插件ext-plugin-post-resp,在前置插件中获取请求信息,在后置插件中获取响应信息,在多线程环境下,如何将请求数据串联起来

未关闭
#247 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Java
星标
152
派生
102
PR 合并指标
30 天内没有已合并 PR

描述

### Issue description
在路由上配置了一个前置插件ext-plugin-pre-req和后置插件ext-plugin-post-resp,在前置插件中获取请求信息,在后置插件中获取响应信息,在多线程环境下,如何将请求数据串联起来。使用线程id和requestId都会出现错乱。

### code
@Override
public void filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) {
long requestId = request.getRequestId();

String uuid = UuidUtil.create2();
Thread thread = Thread.currentThread();
thread.setName(uuid);
logger.info("【前置拦截过滤器线程名称】:" + uuid);

String path = request.getPath();
requestPathMaps.put(uuid, path);
chain.filter(request, response);
}

@Override
public void postFilter(PostRequest request, PostResponse response, PluginFilterChain chain) {
Thread thread = Thread.currentThread();
String uuid = thread.getName();
logger.info("【后置拦截过滤器线程名称】:" + uuid);

long requestId = request.getRequestId() - 1;
String responseBody = formatBody(request.getBody());

logger.info("【后置拦截过滤器接口路径】:" + requestPathMaps.get(uuid));
logger.info("【后置拦截过滤器接口响应结果】:" + responseBody);

response.setBody(responseBody);
}

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。