It is thread-safe because stub is immutable, and each withInterceptor() creates a new stub.
I wrote up some example: https://gist.github.com/zhangkun83/61b97173b87a5847bdacb986ccea818d On Thu, Jun 16, 2016 at 2:16 PM, Min Yao <[email protected]> wrote: > Hi Kun, > Is it thread safe to use stub.withInterceptors()? In our case, a stub > can be used in multiple threads. > And can you show me the code example of "use a ServerInterceptor to > extract the creds from the headers and put in the Context > <https://github.com/grpc/grpc-java/blob/master/core/src/main/java/io/grpc/Context.java>, > then the service handler can read it from the Context."? > Best > > On Thu, Jun 16, 2016 at 1:59 PM, Kun Zhang <[email protected]> wrote: > >> stub.withInterceptors() creates a new stub, and such stub creation is so >> cheap that you can do: >> >> stub.withInterceptors(...).foo(request); >> >> to attach different interceptors for individual RPCs. Of course the >> resulting stub is also good for multiple uses if you want. >> >> It is also the case for stub.withCallCredentials(). It's a dedicated >> interface for credentials, thus more user-friendly and easier to implement >> than interceptors. >> >> On Thu, Jun 16, 2016 at 1:45 PM, Min Yao <[email protected]> >> wrote: >> >>> Hi Xiao, >>> The interceptor is binded to the stub, it will add the same header >>> to each rpc request. But we want to add different headers to the request >>> based on different users. >>> Best regard, >>> Min Yao >>> >>> On Thu, Jun 16, 2016 at 12:32 PM, Xiao Hang (杭啸) <[email protected]> >>> wrote: >>> >>>> You can create a interceptor to do so. >>>> MetadataUtils.newAttachHeadersInterceptor >>>> should work for you. >>>> >>>> On Thu, Jun 16, 2016 at 12:25 PM, Min Yao <[email protected]> >>>> wrote: >>>> >>>>> Hi Yang and Kun, >>>>> I am Min Yao from Luminate Wireless Inc.. We have used gRPC in >>>>> our projects. Currently we have an application case, where many users >>>>> share >>>>> a stub to send rpc requests with per user's credential carried on request >>>>> metadata. It is easy to achieve this in grpc C++ since the user can add >>>>> the >>>>> credential to ClientContext and server can fetch the credential from >>>>> ServerContext. However, grpc-java doesn't provide the method to add each >>>>> user's credential to each rpc request metadata. Is there a good way to >>>>> solve this problem? Thanks. >>>>> >>>>> Best regard, >>>>> Min Yao >>>>> >>>>> -- >>>>> 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 post to this group, send email to [email protected]. >>>>> To view this discussion on the web visit https://groups.google.com/d/ >>>>> msgid/grpc-io/CAPVo65Ds3EfE%2B%3DiN-weTTKZnVJwRKez7b_wc3g- >>>>> wdh8O0EjtOA%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/grpc-io/CAPVo65Ds3EfE%2B%3DiN-weTTKZnVJwRKez7b_wc3g-wdh8O0EjtOA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> >>>> >>>> -- >>>> rocking >>>> >>> >>> >> >> >> -- >> - Kun >> > > -- - Kun -- 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 post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/CAAyQuKydpGNPJ_FxJj3hnH_%3Dr-aWDm0xF9Dc05UwzvFDQX5HmQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
