pushed both classes (and some others) to central: 
https://search.maven.org/artifact/pl.morgwai.base/grpc-utils/1.0-alpha1/jar

Cheers!
On Thursday, May 6, 2021 at 1:58:01 AM UTC+7 Piotr Morgwai Kotarbinski 
wrote:

> to fulfill the void left by my previous message  ;-)  here is 
> ConcurrentRequestObserver which eases up developing bi-di streaming 
> methods that dispatch work to other threads but don't need to preserve 
> order of responses:
>
>
> https://github.com/morgwai/grpc-utils/blob/master/src/main/java/pl/morgwai/base/grpc/utils/ConcurrentRequestObserver.java
>
> it handles all the synchronization and manual flow control to maintain the 
> desired concurrency level while also preventing an excessive response 
> messages buffering.
> This one is gRPC specific as  websockets do not have half-closing and 
> manual flow control, so not much left to ease-up there  ;-]
>
> Cheers!
>
> On Friday, April 30, 2021 at 4:10:25 PM UTC+7 Piotr Morgwai Kotarbinski 
> wrote:
>
>> please note that this class should only be used if the response messages 
>> order requirement cannot be dropped: if you control a given proto interface 
>> definition, then it's more efficient to add some unique id to request 
>> messages, include it in response messages and send them as soon as they are 
>> produced, so nothing needs to be buffered.
>>
>> Cheers!
>>
>> On Friday, April 30, 2021 at 8:59:11 AM UTC+7 nitish bhardwaj wrote:
>>
>>>
>>> Thanks for contributing  *OrderedConcurrentOutputBuffer. * I totally 
>>> agree, this would be really useful to utilize cores efficiently.
>>>
>>>
>>> On Wednesday, April 28, 2021 at 1:27:46 PM UTC+5:30 mor...@gmail.com 
>>> wrote:
>>>
>>>> Thanks :)
>>>>
>>>> I was surprised actually, because I thought parallel request message 
>>>> processing was a common use-case, both for gRPC and websockets
>>>> (for example if we have a service that does some single-threaded 
>>>> graphic processing on received images and sends back a modified version of 
>>>> a given image, it would be most efficient to dispatch the processing to a 
>>>> thread pool with a size corresponding to available CPU/GPU cores, right? 
>>>> As 
>>>> processing them sequentially would utilize just 1 core per request stream, 
>>>> so in case of low number of concurrent request streams, we would be 
>>>> underutilizing the cores).
>>>>
>>>> Cheers! 
>>>>
>>>> On Wednesday, April 28, 2021 at 6:52:08 AM UTC+7 Eric Anderson wrote:
>>>>
>>>>> Yeah, we don't have anything pre-existing that does something like 
>>>>> that; it gets into the specifics of your use-case. Making something 
>>>>> yourself was appropriate. I will say that the strategy used in 
>>>>> OrderedConcurrentOutputBuffer with the Buckets seems really clean.
>>>>>
>>>>> On Thu, Apr 22, 2021 at 9:21 AM Piotr Morgwai Kotarbinski <
>>>>> mor...@gmail.com> wrote:
>>>>>
>>>>>> in case someone needs it also, I've written it myself due to lack of 
>>>>>> answers either here and on SO:
>>>>>>
>>>>>> https://github.com/morgwai/java-utils/blob/master/src/main/java/pl/morgwai/base/utils/OrderedConcurrentOutputBuffer.java
>>>>>> feedback is welcome :)
>>>>>> On Tuesday, April 20, 2021 at 11:09:59 PM UTC+7 Piotr Morgwai 
>>>>>> Kotarbinski wrote:
>>>>>>
>>>>>>> Hello
>>>>>>> i have a stream of messages coming from a websocket or a grpc 
>>>>>>> client. for each message my service produces 0 or more reply messages. 
>>>>>>> by 
>>>>>>> default both websocket endpoints and grpc request observers are 
>>>>>>> guaranteed 
>>>>>>> to be called by maximum 1 thread concurrently, so my replies are sent 
>>>>>>> in 
>>>>>>> the same order as requests. Now I want to dispatch request processing 
>>>>>>> to 
>>>>>>> other threads and process them in parallel, but still keep the order. 
>>>>>>> Therefore, I need some "concurrent ordered response buffer", which will 
>>>>>>> buffer replies to a given request message until processing of previous 
>>>>>>> requests is finished and replies to them are sent (in order they were 
>>>>>>> produced within each "request bucket").
>>>>>>>
>>>>>>> I can develop such class myself, but it seems a common case, so I 
>>>>>>> was wondering if maybe such thing already exists (to not reinvent the 
>>>>>>> wheel). however I could not easily find anything on the web nor get any 
>>>>>>> answer on SO 
>>>>>>> <https://stackoverflow.com/questions/67174565/java-concurrent-ordered-response-buffer>
>>>>>>> . does anyone knows about something like this?
>>>>>>>
>>>>>>> Thanks!
>>>>>>>
>>>>>> -- 
>>>>>> 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 grpc-io+u...@googlegroups.com.
>>>>>> To view this discussion on the web visit 
>>>>>> https://groups.google.com/d/msgid/grpc-io/e7107eed-fa35-4b2e-8d5a-5754e0a37740n%40googlegroups.com
>>>>>>  
>>>>>> <https://groups.google.com/d/msgid/grpc-io/e7107eed-fa35-4b2e-8d5a-5754e0a37740n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>>

-- 
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 grpc-io+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/f7df2c4c-9e8b-40ab-b3ee-529e780e4345n%40googlegroups.com.

Reply via email to