This is great. Thanks a lot Malaka. Also, if we use the file connector as the outbound channel, will it work in the same way?
On Tue, Mar 1, 2016 at 12:36 PM, Malaka Silva <[email protected]> wrote: > Hi All, > > Please ignore my previous comments. This can be done with current > implementation. > > if (builder instanceof DataSourceMessageBuilder && > "true".equals(streaming)) { > dataSource = ManagedDataSourceFactory.create(new > FileObjectDataSource(file, contentType)); > in = null; > } else { > in = new > AutoCloseInputStream(file.getContent().getInputStream()); > dataSource = null; > } > .............. > OMElement documentElement; > if (in != null) { > documentElement = builder.processDocument(in, contentType, > axis2MsgCtx); > } else { > documentElement = > ((DataSourceMessageBuilder)builder).processDocument(dataSource, > contentType, axis2MsgCtx); > } > ........... > if(dataSource != null) { > dataSource.destroy(); > } > > This is > because > message builder able to build messages from > > DataSource objects. > > > DataSource > by definition the data from a DataSource can be read > > multiple times, > builders that implement > this interface > can > avoid storing the message content in memory. > > If a message builder implements this interface and the > file/vfs > is able to provide the message payload as a data source, then the method > defined by this interface should be preferred over the method defined by > Builder. > This > helps optimizing > PT > with > vfs/file. > The builder will typically expose the data source directly or indirectly > through the returned OMElement, e.g. by adding to the tree an OMText or > OMDataSource node referencing the data source. > > I have checked this with inbound but there is a fix we need to do. I have > done it in [1]. I have done several tests with and without streaming from > 5mb to 1gb files. > > Without streaming [2] and [3] will show the memory growth. With streaming > [4]. Without streaming most of the time ESB went OOM. > > Find the related configs and axis2 changes in [5] and [6]. > > [1] https://wso2.org/jira/browse/ESBJAVA-4458 > > [2] > > [image: Inline image 1] > > [3] > > [image: Inline image 2] > > [4] > > [image: Inline image 3] > > [5] > > <inboundEndpoint xmlns="http://ws.apache.org/ns/synapse" name="load" > sequence="request" onError="fault" protocol="file" suspend="false"> > <parameters> > <parameter name="interval">10000</parameter> > <parameter name="coordination">true</parameter> > <parameter > name="transport.vfs.ContentType">application/file</parameter> > <parameter name="transport.vfs.LockReleaseSameNode">false</parameter> > <parameter name="transport.vfs.AutoLockRelease">false</parameter> > <parameter name="transport.vfs.ActionAfterFailure">DELETE</parameter> > <parameter name="transport.vfs.CreateFolder">true</parameter> > <parameter name="sequential">true</parameter> > <parameter name="transport.vfs.ActionAfterProcess">DELETE</parameter> > <parameter > name="transport.vfs.FileURI">file:///home/wso2/work/tmp/file/in</parameter> > <parameter name="transport.vfs.DistributedLock">false</parameter> > <parameter name="transport.vfs.Streaming">true</parameter> > <parameter name="transport.vfs.Locking">enable</parameter> > <parameter name="transport.vfs.FileSortAscending">true</parameter> > <parameter name="transport.vfs.FileSortAttribute">NONE</parameter> > <parameter name="transport.vfs.Build">false</parameter> > </parameters> > </inboundEndpoint> > > <endpoint name="fileout"> > <address uri="vfs:file:///home/wso2/work/tmp/file/out"/> > </endpoint> > <sequence name="request" onError="fault"> > <property name="OUT_ONLY" scope="default" type="STRING" > value="true"/> > <send> > <endpoint key="fileout"/> > </send> > </sequence> > > [6] > <messageBuilder contentType="application/file" > class="org.apache.axis2.format.BinaryBuilder"/> > > <messageFormatter contentType="application/file" > > class="org.wso2.carbon.relay.ExpandingMessageFormatter"/> > > On Mon, Feb 29, 2016 at 12:02 PM, Malaka Silva <[email protected]> wrote: > >> Hi Kasun, >> >> Currently no OOB solution with ESB 4.9.0. File always gets build before >> mediation. >> >> However use case mentioned can be handled with Schedule task -> File >> connector search -> File connector copy >> >> +1 for OOB solution. >> >> We can do this for ESB 5.0. Also there is an option to do this as a >> custom inbound. So that this can be used by previous ESB versions as well. >> >> So default inbound can be used, if someone needs to do a mediation on >> file content and custom inbound for PT file use case. WDYT? >> >> >> On Mon, Feb 29, 2016 at 11:49 AM, Kasun Indrasiri <[email protected]> wrote: >> >>> Hi Malaka, >>> >>> Do we support the $subject? Basically we use an Inbound as the source >>> and use file connector as the destination. If this is not supported yet, we >>> got to add this to ESB 5. >>> >>> Thanks, >>> Kasun >>> >>> -- >>> Kasun Indrasiri >>> Software Architect >>> WSO2, Inc.; http://wso2.com >>> lean.enterprise.middleware >>> >>> cell: +94 77 556 5206 >>> Blog : http://kasunpanorama.blogspot.com/ >>> >> >> >> >> -- >> >> Best Regards, >> >> Malaka Silva >> Senior Tech Lead >> M: +94 777 219 791 >> Tel : 94 11 214 5345 >> Fax :94 11 2145300 >> Skype : malaka.sampath.silva >> LinkedIn : http://www.linkedin.com/pub/malaka-silva/6/33/77 >> Blog : http://mrmalakasilva.blogspot.com/ >> >> WSO2, Inc. >> lean . enterprise . middleware >> http://www.wso2.com/ >> http://www.wso2.com/about/team/malaka-silva/ >> <http://wso2.com/about/team/malaka-silva/> >> https://store.wso2.com/store/ >> >> Save a tree -Conserve nature & Save the world for your future. Print this >> email only if it is absolutely necessary. >> > > > > -- > > Best Regards, > > Malaka Silva > Senior Tech Lead > M: +94 777 219 791 > Tel : 94 11 214 5345 > Fax :94 11 2145300 > Skype : malaka.sampath.silva > LinkedIn : http://www.linkedin.com/pub/malaka-silva/6/33/77 > Blog : http://mrmalakasilva.blogspot.com/ > > WSO2, Inc. > lean . enterprise . middleware > http://www.wso2.com/ > http://www.wso2.com/about/team/malaka-silva/ > <http://wso2.com/about/team/malaka-silva/> > https://store.wso2.com/store/ > > Save a tree -Conserve nature & Save the world for your future. Print this > email only if it is absolutely necessary. > -- Kasun Indrasiri Software Architect WSO2, Inc.; http://wso2.com lean.enterprise.middleware cell: +94 77 556 5206 Blog : http://kasunpanorama.blogspot.com/
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
