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.

Reply via email to