This CarbonMessage API is not intuitive. Please share code samples that demonstrate streaming input handling with CarbonMessage (request).
On Thu, Jun 2, 2016 at 9:52 PM, Samiyuru Senarathne <samiy...@wso2.com> wrote: > I assume isEndOfMsgAdded only tell that all the chunks are loaded to the > blocking queue. So still we have to complete the total blocking queue. > > On Thu, Jun 2, 2016 at 9:50 PM, Afkham Azeez <az...@wso2.com> wrote: > >> while(!carbonMsg.isEndOfMsgAdded) { >> ByteBuffer chunk = carbonMsg.getMessageBody(); >> >> } >> >> In the above segment, carbonMsg is the request CarbonMessage and the >> above code segment doesn't work. Code inside the while loop never executes. >> >> >> On Thu, Jun 2, 2016 at 9:47 PM, Isuru Ranawaka <isu...@wso2.com> wrote: >> >>> 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/ >>> >> >> >> >> -- >> *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* >> > > > > -- > Samiyuru Senarathne > *Software Engineer* > Mobile : +94 (0) 71 134 6087 > samiy...@wso2.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 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 Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev