Aze*_*der 11 java grpc grpc-java
我正在工作gRPC
,我想在同一个端口上运行多个服务
Server server = ServerBuilder.forPort(8080)
.addService(new HelloServiceImpl())
.addService(new ByeServiceImpl())
.build();
Run Code Online (Sandbox Code Playgroud)
这是在同一端口上运行多个 GRPC 服务的正确方法吗?完整代码如下。
HelloWorld.proto
Server server = ServerBuilder.forPort(8080)
.addService(new HelloServiceImpl())
.addService(new ByeServiceImpl())
.build();
Run Code Online (Sandbox Code Playgroud)
ByWorld.proto
syntax = "proto3";
option java_multiple_files = true;
package proto3.rpc;
message HelloRequest {
string firstName = 1;
string lastName = 2;
}
message HelloResponse {
string greeting = 1;
}
service HelloService {
rpc hello(HelloRequest) returns (HelloResponse);
}
Run Code Online (Sandbox Code Playgroud)
HelloServiceImpl.java
syntax = "proto3";
option java_multiple_files = true;
package proto3.rpc;
message ByeRequest {
string firstName = 1;
string lastName = 2;
}
message ByeResponse {
string greeting = 1;
}
service ByeService {
rpc bye(ByeRequest) returns (ByeResponse);
}
Run Code Online (Sandbox Code Playgroud)
ByeServiceImpl.java
public class HelloServiceImpl extends HelloServiceImplBase{
@Override
public void hello(
HelloRequest request,
StreamObserver<HelloResponse> responseObserver){
String greeting = new StringBuilder()
.append("Hello, ")
.append(request.getFirstName())
.append(" ")
.append(request.getLastName())
.toString();
HelloResponse helloResponse = HelloResponse.newBuilder()
.setGreeting(greeting)
.build();
responseObserver.onNext(helloResponse);
responseObserver.onCompleted();
}
}
Run Code Online (Sandbox Code Playgroud)
GrpcServer.java
public class ByeServiceImpl extends ByeServiceImplBase{
@Override
public void bye(
ByeRequest request,
StreamObserver<ByeResponse> responseObserver){
String greeting = new StringBuilder()
.append("Bye, ")
.append(request.getFirstName())
.append(" ")
.append(request.getLastName())
.toString();
ByeResponse byeResponse = ByeResponse.newBuilder()
.setGreeting(greeting)
.build();
responseObserver.onNext(byeResponse);
responseObserver.onCompleted();
}
}
Run Code Online (Sandbox Code Playgroud)
GrpcClient.java
public class GrpcServer {
public static void main(String args[]) {
Server server = ServerBuilder.forPort(8080)
.addService(new HelloServiceImpl())
.addService(new ByeServiceImpl())
.build();
try {
server.start();
server.awaitTermination();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出
Hello Service...
Hello Azeem Haider
Bye Service...
Bye Azeem Haider
Run Code Online (Sandbox Code Playgroud)
我知道两个服务文件看起来非常相似,但这只是例如我们如何在同一个IP:PORT上运行多个服务我正在使用这种方式是一种好方法还是有任何首选方式?
归档时间: |
|
查看次数: |
9613 次 |
最近记录: |