Looks like we require changes for input streaming as well.

Does CarbonMessage.getMessageBody() block until the next chunk is received?

On Thu, Jun 2, 2016 at 9:18 PM, Afkham Azeez <[email protected]> wrote:

> Samiyuru/Isuru,
> Does this mean that the input streaming in MSF4J is currently working
> without any issue and only output streaming requires some work?
>
> On Tue, May 3, 2016 at 2:29 PM, Isuru Ranawaka <[email protected]> wrote:
>
>> Hi All,
>>
>> Following are the details on streaming support of carbon transport.
>> Basically we can looking to streaming support in request path and response
>> path separately.
>>
>> Request Path (Streaming is working)
>>
>> [image: requestpath.png]
>>
>> According to above diagram
>>
>>    -
>>
>>    We have blocking queue in the carbon message which keeps the content
>>    . when headers are received through Netty worker thread it will create
>>    CarbonMessage with a blocking queue and publish carbon message to engine
>>    level thread.
>>    -
>>
>>    Reference for blocking queue is cached in the connection and when
>>    content is received it will be filled to that queue from Netty worker
>>    thread.
>>    -
>>
>>    Meanwhile engine level threads can consume content through
>>    queue(While IO worker is filling ) and can directly send to file system or
>>    use sender for send messages to external  service.
>>    -
>>
>>    According to that streaming should work in Request path in
>>    Integration Server or MSF4J without any problem.
>>
>>
>> Response Path (Streaming working scenario)
>>
>> [image: responsepathworking.png]
>>
>>
>> In Response path basic difference we have is we are handling responses
>> through callbacks.
>>
>>
>>    -
>>
>>    Similar to  Request path architecture  Sender side IO thread  creates
>>    a CM when response headers are received and publish to engine level 
>> thread .
>>    -
>>
>>    Engine level thread calls carbonCallback.done() and waits on queue
>>    for content.
>>    -
>>
>>    Meanwhile IO thread writes the content to the Queue .
>>    -
>>
>>    So writing to Queue and reading from queue happens parallel and
>>    streaming should work properly.
>>    -
>>
>>    So streaming is working fine with Integration Server for this kind of
>>    scenarios.
>>
>>
>>
>> Response Path (Streaming not working scenario)
>>
>> [image: responsepathnotworking.png]
>>
>> This scenario is basically, if we have a Echo mediator or assume MSF4J
>> has a service which is  reading a file as chunks and writes back to client .
>>
>>
>>    -
>>
>>    Basic difference with the previous one  is in this approach reading a
>>    file chunk  or stream and writing that file chunk or stream to Queue is
>>    happened  within the same engine level thread as well as with reading from
>>    queue and writing to Listener side Netty worker threads.(Same thread
>>    produce and consume causes for deadlock)
>>    -
>>
>>    In the previous example reading from stream and filling the queue was
>>    happened  through Sender side IO thread and consuming the queue and 
>> writing
>>    to Listener side  IO thread was happened through engine level thread. (Two
>>    different threads produce and consume)
>>    -
>>
>>    Streaming is not working in this kind of scenarios because we cannot
>>    write to queue and keep polling the queue within single thread.
>>
>>
>> We can figure out following solutions and what will be the most suitable
>> one.
>>
>>
>>
>>    -
>>
>>    Introduce another thread for run the callback logic instead of
>>    running through calling thread.
>>
>>                 This will solve the above streaming problem but when it
>> comes to  general message flow this will add another level of thread which
>> will actually does not need.
>>
>>    -
>>
>>    Introduce another method in ResponseCallback which will support
>>    streaming which does not queuing contents.  it will directly call IO
>>    threads and write contents to IO when chunks are received. This can be 
>> used
>>    only within single thread scenario(File reading and writing ).
>>    -
>>
>>    Introduce another thread for read File stream or call Callback from
>>    another thread other than to reading thread  from MSF4J level.Then it will
>>    be equivalent to how we used it in Integration Server with the use of
>>    Sender.
>>
>> ThankYou
>>
>> IsuruR
>>
>> On Tue, May 3, 2016 at 12:09 PM, Kasun Indrasiri <[email protected]> wrote:
>>
>>> Had a chat with Ranawaka on this.. seems like we do have couple of ways
>>> to handle this. He will share the details.
>>>
>>> On Mon, May 2, 2016 at 6:13 AM, Afkham Azeez <[email protected]> wrote:
>>>
>>>> The problem is, we can't do the next MSF4J release because we can't
>>>> lose a feature in a release. This is a blocker for us. We have plans to
>>>> release in the next 2 weeks.
>>>>
>>>> On Mon, May 2, 2016 at 4:56 PM, Isuru Ranawaka <[email protected]> wrote:
>>>>
>>>>> Hi Azeez,
>>>>>
>>>>> Currently streaming works if we used both sender side and listener
>>>>> side only . But since MSF4J is using only listener side if we did not 
>>>>> spawn
>>>>> separate thread from engine level for writing response  it will not work
>>>>> because request reading and writing happens through same thread. But with
>>>>> the next release we will fix that. currently we are finalizing on removing
>>>>> engine level thread model from transport.
>>>>>
>>>>>
>>>>> thanks
>>>>> IsuruR
>>>>>
>>>>> On Mon, May 2, 2016 at 3:50 PM, Afkham Azeez <[email protected]> wrote:
>>>>>
>>>>>> Is this working after moving to the new transport framework?
>>>>>>
>>>>>> --
>>>>>> *Afkham Azeez*
>>>>>> Director of Architecture; WSO2, Inc.; http://wso2.com
>>>>>> Member; Apache Software Foundation; http://www.apache.org/
>>>>>> * <http://www.apache.org/>*
>>>>>> *email: **[email protected]* <[email protected]>
>>>>>> * cell: +94 77 3320919 <%2B94%2077%203320919>blog: *
>>>>>> *http://blog.afkham.org* <http://blog.afkham.org>
>>>>>> *twitter: **http://twitter.com/afkham_azeez*
>>>>>> <http://twitter.com/afkham_azeez>
>>>>>> *linked-in: **http://lk.linkedin.com/in/afkhamazeez
>>>>>> <http://lk.linkedin.com/in/afkhamazeez>*
>>>>>>
>>>>>> *Lean . Enterprise . Middleware*
>>>>>>
>>>>>> _______________________________________________
>>>>>> Dev mailing list
>>>>>> [email protected]
>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best Regards
>>>>> Isuru Ranawaka
>>>>> M: +94714629880
>>>>> Blog : http://isurur.blogspot.com/
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> *Afkham Azeez*
>>>> Director of Architecture; WSO2, Inc.; http://wso2.com
>>>> Member; Apache Software Foundation; http://www.apache.org/
>>>> * <http://www.apache.org/>*
>>>> *email: **[email protected]* <[email protected]>
>>>> * cell: +94 77 3320919 <%2B94%2077%203320919>blog: *
>>>> *http://blog.afkham.org* <http://blog.afkham.org>
>>>> *twitter: **http://twitter.com/afkham_azeez*
>>>> <http://twitter.com/afkham_azeez>
>>>> *linked-in: **http://lk.linkedin.com/in/afkhamazeez
>>>> <http://lk.linkedin.com/in/afkhamazeez>*
>>>>
>>>> *Lean . Enterprise . Middleware*
>>>>
>>>> _______________________________________________
>>>> Dev mailing list
>>>> [email protected]
>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>
>>>>
>>>
>>>
>>> --
>>> Kasun Indrasiri
>>> Software Architect
>>> WSO2, Inc.; http://wso2.com
>>> lean.enterprise.middleware
>>>
>>> cell: +94 77 556 5206
>>> Blog : http://kasunpanorama.blogspot.com/
>>>
>>
>>
>>
>> --
>> Best Regards
>> Isuru Ranawaka
>> M: +94714629880
>> Blog : http://isurur.blogspot.com/
>>
>
>
>
> --
> *Afkham Azeez*
> Director of Architecture; WSO2, Inc.; http://wso2.com
> Member; Apache Software Foundation; http://www.apache.org/
> * <http://www.apache.org/>*
> *email: **[email protected]* <[email protected]>
> * cell: +94 77 3320919 <%2B94%2077%203320919>blog: *
> *http://blog.afkham.org* <http://blog.afkham.org>
> *twitter: **http://twitter.com/afkham_azeez*
> <http://twitter.com/afkham_azeez>
> *linked-in: **http://lk.linkedin.com/in/afkhamazeez
> <http://lk.linkedin.com/in/afkhamazeez>*
>
> *Lean . Enterprise . Middleware*
>



-- 
*Afkham Azeez*
Director of Architecture; WSO2, Inc.; http://wso2.com
Member; Apache Software Foundation; http://www.apache.org/
* <http://www.apache.org/>*
*email: **[email protected]* <[email protected]>
* cell: +94 77 3320919blog: **http://blog.afkham.org*
<http://blog.afkham.org>
*twitter: **http://twitter.com/afkham_azeez*
<http://twitter.com/afkham_azeez>
*linked-in: **http://lk.linkedin.com/in/afkhamazeez
<http://lk.linkedin.com/in/afkhamazeez>*

*Lean . Enterprise . Middleware*
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to