On Mon, Sep 21, 2020 at 5:54 AM Nicholas Bunn <[email protected]> wrote:

> What I am looking for is a way to query all four services in parallel and
> wait for a callback or notification from each one once they have completed
> their process, and their information is available. Would one be able to
> achieve this with streaming? Or is the client still limited to
> communication with one server at a time (essentially implementing a
> blocking call)?
>

Unary vs streaming and blocking vs async (or non-blocking) are separate
dimensions. Unary vs streaming is talking about the actual semantic
structure while blocking vs async is a detail about the *API*. So blocking
vs async is really a question of "how have gRPC implementations exposed
these RPCs."

A large number of gRPC language APIs support
don't-consume-a-thread-per-RPC. Go uses blocking, but goroutines avoid your
concern. Java has a Future API for unary and an async API for unary and
streaming. Kotlin supports coroutines. C# supports async/await, although
I'm not as familiar with the streaming API. Node.js is (obviously) async.
Python now supports async/await. C++ has an async API, although it is
pretty different than what you may be used to (and IIRC the callback API
isn't quite ready yet). And there's other implementations as well.

So you are pretty free to take your pick. If you are leading toward Java
already, using unary RPCs and Futures is probably easiest. You can use
something like Guava's Futures.allAsList()
<https://guava.dev/releases/snapshot/api/docs/com/google/common/util/concurrent/Futures.html#allAsList-com.google.common.util.concurrent.ListenableFuture...->
to combine the results and cancel the other RPCs if any one of the RPCs
fails. There's many other ways to mix-and-match. Streaming is certainly
possible as well, but there's fewer utilities to combine the results so you
may have more boilerplate.

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/CA%2B4M1oOioFVp1GzJ-svQ2S7EHGj8E5faPJyaWse9H_cjxqsDSQ%40mail.gmail.com.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to