Hi Azeez, yes that should work. Anyhow content needs to be added to carbonMsg from one thread and read to be from another thread.
thanks On Thu, Jun 2, 2016 at 9:23 PM, Afkham Azeez <az...@wso2.com> wrote: > Is the following code segment the way to read all the chunks; > > while(!carbonMsg.isEndOfMsgAdded) { > ByteBuffer chunk = carbonMsg.getMessageBody(); > > } > > On Thu, Jun 2, 2016 at 9:21 PM, Afkham Azeez <az...@wso2.com> wrote: > >> 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 <az...@wso2.com> 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 <isu...@wso2.com> 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 <ka...@wso2.com> >>>> 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 <az...@wso2.com> 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 <isu...@wso2.com> >>>>>> 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 <az...@wso2.com> 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: **az...@wso2.com* <az...@wso2.com> >>>>>>>> * 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 >>>>>>>> Dev@wso2.org >>>>>>>> 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: **az...@wso2.com* <az...@wso2.com> >>>>>> * 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 >>>>>> Dev@wso2.org >>>>>> 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: **az...@wso2.com* <az...@wso2.com> >>> * 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: **az...@wso2.com* <az...@wso2.com> >> * 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: **az...@wso2.com* <az...@wso2.com> > * 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* > -- Best Regards Isuru Ranawaka M: +94714629880 Blog : http://isurur.blogspot.com/
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev