quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.54k stars 2.61k forks source link

Improve gRPC documentation #21850

Open dhoffer opened 2 years ago

dhoffer commented 2 years ago

Description

The current gRPC documentation is too basic: https://quarkus.io/guides/grpc-getting-started#generating-java-files-from-proto-with-protobuf-maven-plugin

It should be enhanced to cover more things related to gRPC. I would like to see the following included:

Cover the non-reactive model as well as the reactive. Explain why one is better/preferred over the other. Include examples of configuring more than one client via application.properties. Show how to perform JWT authorization, e.g. how to send user credential to server.

Implementation ideas

No response

quarkus-bot[bot] commented 2 years ago

/cc @cescoffier, @michalszynkiewicz

mkouba commented 2 years ago

The current gRPC documentation is too basic:

First of all, there are two more guides: Implementing a gRPC Service and Consuming a gRPC Service.

Cover the non-reactive model as well as the reactive.

There's nothing Quarkus-specific in the non-reactive model so you can take a look at the official docs.

Explain why one is better/preferred over the other.

There are many materials that describe the differences and pros/cons, e.g. https://www.youtube.com/watch?v=TbMJDEXPyjA and https://developers.redhat.com/blog/2019/11/18/how-quarkus-brings-imperative-and-reactive-programming-together.

Include examples of configuring more than one client via application.properties.

Hm, basically just add a new config property for the specific client name (as used in the @GrpcClient annotation), i.e. quarkus.grpc.clients.foo.port and quarkus.grpc.clients.bar.port for injections @GrpcClient Greeter foo and @GrpcClient Greeter bar. The list of possible properties can be found in the docs.

Show how to perform JWT authorization, e.g. how to send user credential to server.

I'm not sure this is possible. CC @michalszynkiewicz @sberyozkin

michalszynkiewicz commented 2 years ago

The current gRPC documentation is too basic:

First of all, there are two more guides: Implementing a gRPC Service and Consuming a gRPC Service.

Cover the non-reactive model as well as the reactive.

There's nothing Quarkus-specific in the non-reactive model so you can take a look at the official docs.

Explain why one is better/preferred over the other.

There are many materials that describe the differences and pros/cons, e.g. https://www.youtube.com/watch?v=TbMJDEXPyjA and https://developers.redhat.com/blog/2019/11/18/how-quarkus-brings-imperative-and-reactive-programming-together.

Include examples of configuring more than one client via application.properties.

Hm, basically just add a new config property for the specific client name (as used in the @GrpcClient annotation), i.e. quarkus.grpc.clients.foo.port and quarkus.grpc.clients.bar.port for injections @GrpcClient Greeter foo and @GrpcClient Greeter bar. The list of possible properties can be found in the docs.

Show how to perform JWT authorization, e.g. how to send user credential to server.

I'm not sure this is possible. CC @michalszynkiewicz @sberyozkin

You can send a header containing the JWT token using GrpcClientUtls. But you'd have to construct the token yourself.

If you create an issue that would desribe in more detail how it works with your server, and if it is a standard solution, we may try to provide better tools to help with it