在GRPC中...在可以响应任何请求之前调用另一个GRPC服务的最有效方法是什么?
我的代码在这里看起来有些混乱……在GreetingServiceImpl的构造函数中,我正在启动一个Thread只是为了从运行在不同端口上的GreetingServiceRepository服务中获取某种Greetings列表?
因此,用例是这样的……有一个GRPC服务GreetingsRepository,其中包含问候列表,以及GreetingServiceImpl,它调用GreetingsRepository ..我想自定义响应,以便可以为每个请求返回自定义响应。 ...
public class MyGrpcServer {
static public void main(String [] args) throws IOException, InterruptedException {
Server server = ServerBuilder.forPort(8080)
.addService(new GreetingServiceImpl()).build();
System.out.println("Starting server...");
server.start();
System.out.println("Server started!");
server.awaitTermination();
}
public static class GreetingServiceImpl extends GreetingServiceGrpc.GreetingServiceImplBase {
public GreetingServiceImpl(){
init();
}
public void init(){
//Do initial long running task
//Like running a thread that will call another service from a repository
Thread t1 = new Thread(){
public void run(){
//Call another grpc service
ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 8081)
.usePlaintext(true)
.build();
GreetingServiceRepository.eGreetingServiceRepositoryBlockingStub stub =
GreetingServiceRepositoryGrpc.newBlockingStub(channel);
//Do something with the response
}
}
t1.start();
}
GRPC中是否有一种方法可以初始化服务,然后它才能响应任何其他请求?我不确定构造函数是否是一个好主意..并启动另一个线程只是为了调用另一个服务。
慕尼黑5688855
相关分类