Apisix java插件中获取唯一请求id(request_id)

需求
        在项目开发过程中使用apisix java插件,ext-plugin-pre-req对应前置插件,ext-plugin-post-resp对应后置插件,前置插件中有filter方法用于记录接口请求信息(请求参数、请求时间等),后置插件中有postFilter方法用于记录上游服务的响应信息(响应参数、响应时间等),一个请求通过apisix路由匹配,会触发执行java插件,在java插件中记录接口请求日志信息,在高并发的情况下记录日志,就需要将filter方法和postFilter方法获取的日志信息串联起来,最终插入到elasticsearch中,这时就需要一个唯一的request_id

核心代码

@Override
public void filter(HttpRequest request, HttpResponse response, PluginFilterChain chain) {
    logger.info("【进入前置拦截过滤器】");
    String requestId = request.getVars("request_id");
}


@Override
public void postFilter(PostRequest request, PostResponse response, PluginFilterChain chain) {
    logger.info("【进入后置拦截过滤器】");
    String requestId = request.getVars("request_id");
}

/**
 * If you need to fetch some Nginx variables in the current plugin, you will need to declare them in this function.
 * @return a list of Nginx variables that need to be called in this plugin
 */
@Override
public List<String> requiredVars() {
    List<String> vars = new ArrayList<>();
    vars.add("remote_addr");
    vars.add("server_port");
    vars.add("request_id");
    return vars;
}

这里的request_id是从nginx中获取的。
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值