gRPC Timeouts & Deadlines

First, let’s figure out how the timeout differs from the deadline. Timeout is relative value, but deadline is absolute. If we take a timeout and a deadline of 5 seconds, and we will write the following line (the code for an example, it will not work if you run it): Then, if you want to […]

READ MORE

gRPC channel for target was not shutdown properly

Imagine you are faced with an error like this: The point is that if you create a gRPC channel, you must close it after use. Let’s say you’ve already made a channel like this: After use, it will need to be closed. It is important to wait until it closes; awaitTermination() is used for this:

READ MORE

Using gRPC with JKS

gRPC doesn’t support JKS out of the box, but there is a workaround. Below is an example of how to use gRPC and JKS. Server side Client side If you don’t need to use custom truststore, you need to do nothing. If you need to use custom truststore, use example below: You can use trustManagerFactory […]

READ MORE

Cancelling gRPC server-streaming call from client

When using gRPC server-streaming call, you may need to interrupt the execution of the request on the server from the client side.  We have a service on the server: And the sendRequest() method on the client: Suppose, that at some moment we need to send a message from the client to the server that the […]

READ MORE

Share data between interceptor and service gRPC

Let’s imagine that we need to pass data between the interceptor and the service (or we need to sharedata between the interceptor and the service, or we need to exchange data between the interceptor and the service). We have a service: We have the code for starting the gRPC server: In your Interceptor class, in […]

READ MORE

Get client IP address from request gRPC

Let’s imagine that we need to get the client’s ip address from the request.  We have a service:  And the code for starting the gRPC server:  Let’s create a new class:  And register a new interceptor in the gRPC server launch code:  Done. If you need to pass the ip address from the interceptor to the […]

READ MORE

HBase client 1.x with gRPC

Imagine, that you need to use the HBase client 1.x and gRPC in the same Java application. The code for connecting dependencies to Maven will look something like this: If you run the application and execute the request through the HBase client, there will be an exception: The problem is that hbase-client 1.x uses an earlier […]

READ MORE

Spring Boot REST vs gRPC compatibility

Suppose you are using Spring Boot and you have a REST controller: At some point you need to connect the gRPC to the project without disabling REST controller. The gRPC code looks something like this: Then you find out that you can’t start REST server together with gRPC. gRPC will start, but REST will not. […]

READ MORE