我正在使用 Spring Boot gRPC,并遇到了我设置的上下文(我在 @ServerInterceptor 中准备的)未在 @GrpcAdvice ExceptionHandler 的异常中使用的问题。它处理第 5 代 Context.current(),而我则使用第 6 代上下文拦截所有传入呼叫,其中我已准备好用户的元数据。 服务方法也可以与Context.current()
和
第6代一起工作,并且可以访问准备好的元数据,但异常处理程序不能。
如何告诉我的 ExceptionHandler 使用最新的上下文生成(应该是 6 而不是 5)?
我已经尝试在 ExceptionHandler 中使用新的
Context.current()
调用来获取最新版本,但它仍停留在第 5 代。
Context.current().fork()
也创建了新一代(第6代),但其内容与我的拦截器上下文第6代完全不匹配。
我刚刚发现我可以使用
@Order
注释来设置自己的建议订单。将 @Order(0)
放在服务器拦截器上方,将 @Order(1)
放在异常处理程序上方会导致所需的行为,即拦截器在到达异常处理程序之前准备上下文:)