JDK: version 7 or higherYou’ll need a local copy of the example code to work through this quickstart. Download the example code from our Github repository (the following command clones the entire repository, but you just need the examples for this quickstart and other tutorials):
$ # Clone the repository at the latest release to get the example code:
$ git clone -b v1.13.1 https://github.com/grpc/grpc-java
$ # Navigate to the Java examples:
$ cd grpc-java/examples
From the examples directory:
Compile the client and server
$ ./gradlew installDist
Run the server
$ ./build/install/examples/bin/hello-world-server
In another terminal, run the client
$ ./build/install/examples/bin/hello-world-client
Congratulations! You’ve just run a client-server application with gRPC.
Now let’s look at how to update the application with an extra method on the server for the client to call. Our gRPC service is defined using protocol buffers; you can find out lots more about how to define a service in a .proto file in gRPC Basics: Java. For now all you need to know is that both the server and the client “stub” have a SayHello RPC method that takes a HelloRequest parameter from the client and returns a HelloReply from the server, and that this method is defined like this:
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
Let’s update this so that the Greeter service has two methods. Editsrc/main/proto/helloworld.proto and update it with a new SayHelloAgain method, with the same request and response types:
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
// Sends another greeting
rpc SayHelloAgain (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
(Don’t forget to save the file!)
When we recompile the example, normal compilation will regenerate GreeterGrpc.java, which contains our generated gRPC client and server classes. This also regenerates classes for populating, serializing, and retrieving our request and response types.
However, we still need to implement and call the new method in the human-written parts of our example application.
In the same directory, opensrc/main/java/io/grpc/examples/helloworld/HelloWorldServer.java. Implement the new method like this:
private class GreeterImpl extends GreeterGrpc.GreeterImplBase {
@Override
public void sayHello(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
HelloReply reply = HelloReply.newBuilder().setMessage("Hello " + req.getName()).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}
@Override
public void sayHelloAgain(HelloRequest req, StreamObserver<HelloReply> responseObserver) {
HelloReply reply = HelloReply.newBuilder().setMessage("Hello again " + req.getName()).build();
responseObserver.onNext(reply);
responseObserver.onCompleted();
}
}
...
In the same directory, opensrc/main/java/io/grpc/examples/helloworld/HelloWorldClient.java. Call the new method like this:
public void greet(String name) {
logger.info("Will try to greet " + name + " ...");
HelloRequest request = HelloRequest.newBuilder().setName(name).build();
HelloReply response;
try {
response = blockingStub.sayHello(request);
} catch (StatusRuntimeException e) {
logger.log(Level.WARNING, "RPC failed: {0}", e.getStatus());
return;
}
logger.info("Greeting: " + response.getMessage());
try {
response = blockingStub.sayHelloAgain(request);
} catch (StatusRuntimeException e) {
logger.log(Level.WARNING, "RPC failed: {0}", e.getStatus());
return;
}
logger.info("Greeting: " + response.getMessage());
}
Just like we did before, from the examples directory:
Compile the client and server
$ ./gradlew installDist
Run the server
$ ./build/install/examples/bin/hello-world-server
In another terminal, run the client
$ ./build/install/examples/bin/hello-world-client
According to the defined proto file of grpc, the code is automatically generated, which is mainly the basic package of grpc. It includes grpc, stub, service services, etc.;

The debugging example is: the code appears to indicate that grpc is successfully tuned;

Upload the jar to the lib directory. Introduced by groovy, just call it directly in @test;
Simple Cluster Guide In nGrinder 3.3, nGrinder support the "Easy" cluster mode allows the controller to run on a multi-stage machine. Because they run on a single machine, there is no need t...
prerequisites nGrinder combination web application (controller) and a Java application (agent, monitor). If you do not know what is the controller and agents, please refer tonGrinder Profile。 To insta...
The pressure test tool for the GRPC interface is also very small, and it seems to be used in GHz. The official documentation of the tool:https://ghz.sh/docs/usage for example: result Parameter Descrip...
The GRPC service built is a line of service, but it requires QPS to be higher, then you will take a pressure test. Prepare GHz: https: //github.com/bojand/ghz/releases Directly download the correspond...
1. Homepage Performance Test: Click this item to view all pressure test experiments Script: pressure test script information admin (login user): Click to view other options of the platform 2. Create a...
1 Introduction NGRinder is a performance test system based on Grinder development. It consists of a controller and a connection one or more agents. Users can manage and configure test parameters throu...
Why did you choose to use locust? In fact, Jmeter has ready-made plug-ins, which are also very convenient to use. The problem lies in the fact that the Internet of Things devices are measured on the b...
Locust is an easy-to-use distributed load test tool. Even if a LocUst node can support the concurrency of thousands of users in a process, it is mainly through the gevent. Locust is completely based o...
Article directory Another one Deployment demo Write script pressure test Target host monitoring May report an error to sum up: Another one Deployment demo Deploying my own demo for testing on the mach...
Performance test: Tool-nGrinder 1. Open source, java, South Korea 2. Distributed pressure test is possible, there is a control platform, the test script uses python and Clojure language 3. You can mak...