如何在用java实现的grpc服务器端获取每包数据的客户端ip和端口



我想通过java grpc服务获取每包数据对应的客户端ip和端口。

service Auxiliary {
rpc ProcessMessage(AuxiliaryGrpcMsgRequest) returns (AuxiliaryGrpcMsgReply) {
}
}

该方法是由原型生成的

public void processMessage( AuxiliaryGrpcMsgRequest request, 
StreamObserver<AuxiliaryGrpcMsgReply> responseObserver) {
}

我想知道相应的IP和请求端口。我使用ServerInterceptor获取IP,但Interceptor线程与此processMessage线程不同。我不想使用锁来同步两个线程,所以我想看看是否有任何方法可以直接在一个线程中获得与请求对应的客户端的ip和端口

我注意到C++可以使用上下文->peer((来实现这一点。但是java的上下文没有peer(,有什么方法可以解决这个问题吗?

此信息可通过serverCall.getAttributes().get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR)提供给拦截器。如果您希望它在Context中,则需要使用ServerInterceptor将其复制到Context

最新更新