悉野小楼

导航

grpc测试

下载

GreetingServiceImpl.java

package org.example;

import io.grpc.stub.StreamObserver;
import org.example.grpcdemo.GreetingServiceGrpc;
import org.example.grpcdemo.HelloMessage;

public class GreetingServiceImpl extends GreetingServiceGrpc.GreetingServiceImplBase {
    @Override
    public void sayHello(HelloMessage.HelloRequest request, StreamObserver<HelloMessage.HelloResponse> responseObserver) {
        String name = request.getName();
        String message = "Hello, " + name + "!";
        HelloMessage.HelloResponse response = HelloMessage.HelloResponse.newBuilder()
                .setMessage(message)
                .build();
        responseObserver.onNext(response);
        responseObserver.onCompleted();
    }
}

GrpcServer.java

package org.example;

import io.grpc.Server;
import io.grpc.ServerBuilder;

public class GrpcServer {
    public static void main(String[] args) throws Exception {
        Server server = ServerBuilder.forPort(9595)
                .addService(new GreetingServiceImpl())  // 注册服务实现
                .build()
                .start();
        System.out.println("Server started on port 9595");
        server.awaitTermination();
        System.out.println("Server exited");
    }
}

GrpcClient.java

package org.example;

import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import io.grpc.stub.StreamObserver;
import org.example.grpcdemo.GreetingServiceGrpc;
import org.example.grpcdemo.HelloMessage;

public class GrpcClient {
    public static void main(String[] args) {
        ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 9595)
                .usePlaintext()  // 如果使用 TLS,去掉这行
                .build();

        // 同步调用(阻塞式)
        GreetingServiceGrpc.GreetingServiceBlockingStub blockingStub = GreetingServiceGrpc.newBlockingStub(channel);
        HelloMessage.HelloRequest request = HelloMessage.HelloRequest.newBuilder()
                .setName("World")
                .build();
        HelloMessage.HelloResponse response = blockingStub.sayHello(request);
        System.out.println("Response: " + response.getMessage());

        // 异步调用(非阻塞式)
        GreetingServiceGrpc.GreetingServiceStub asyncStub = GreetingServiceGrpc.newStub(channel);
        asyncStub.sayHello(request, new StreamObserver<HelloMessage.HelloResponse>() {
            @Override
            public void onNext(HelloMessage.HelloResponse response) {
                System.out.println("Async Response: " + response.getMessage());
            }

            @Override
            public void onError(Throwable t) {
                t.printStackTrace();
            }

            @Override
            public void onCompleted() {
                System.out.println("RPC completed");
            }
        });
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        channel.shutdown();

        System.out.println("Client shutdown");
    }
}

 

posted on 2025-06-23 22:26  悉野  阅读(7)  评论(0)    收藏  举报