【发布时间】:2021-03-20 08:26:08
【问题描述】:
我有一个 Spring Boot 应用程序。它是一个标准的 http rest api。我在其中添加了一个 grpc 主机以提供并行 grpc 体验。那部分一切正常。我的要求之一是请求/响应日志记录。
我有一个 ServerInterceptor、一个 SimpleForwardingServerCall 包装器和一个 SimpleForwardingServerCallListener 包装器来捕获我需要记录的所有位置(成功和失败调用)。
我需要从 onMessage 获取请求正文,从 2 个位置获取状态码(一个代表失败,一个代表成功),然后是经过的时间。
这么长的问题,我不确定线程模型在 grpc 中是如何工作的,我可以在哪里根据每个请求存储这些信息,所以当我到达没有参数的 onComplete() 时,我可以访问是吗?
我正在做类似的事情:
return new xxxServerCallListener<>(next.startCall(new xxxServerCall<>(call), headers), call);
所以我假设为每个请求创建了一个新的 xxxServerCallListener 和 xxxServerCall,并且我可以在它通过管道移动时将内容存储在其中?那会是最好的存放地点吗?
【问题讨论】:
标签: spring-boot grpc grpc-java