I have a beanio mapping that's rather standard and I read it in but it appears that it reads the entire file into memory instead of streaming it. Is there a way to change that behavior so that I can take items as they are read and put them on a queue?
<from uri="file:/dir/inbound" /> <unmarshal ref="tmxPaymentTechIn" /> <log message="Process and convert records." /> <to uri="seda:processRecords" /> The file is an ole timey batch record with headers and mutli-line, fixed width fields per record. What I'd like to see is each element header, transaction, etc. read from the file and then put on the queue. What I get is an array of the entire file which I can, of course, split but that will get memory intensive. BeanIO works very well for this as there are variable row records (Address for example) and it snaps that stuff up well. But I really want records or groups to come through individually. <stream name="fileIn" format="fixedlength"> <record name="header" order="1" minOccurs="1" maxOccurs="1" class="foo.Header"> <field name="identifier" rid="true" literal="P" position="0" length="1" /> <field name="pid" position="4" length="6" /> <field name="pidPassword" position="11" length="8" /> <field name="sid" position="24" length="6" /> <field name="sidPassword" position="31" length="8" /> <field name="directive" position="40" length="6" /> </record> <group name="transaction" order="2" minOccurs="1" maxOccurs="unbounded" class="foo.Transaction"> <record name="summary" minOccurs="0" maxOccurs="1" class="foo.Summary"> <field name="identifier" rid="true" literal="S" position="0" length="1" /> <field name="reportGroup" position="1" length="10" /> <field name="orderId" position="11" length="8" /> <field name="batchId" position="19" length="14" /> <field name="actionCode" position="33" length="2" /> <segment name="group" class="foo.Group"> <field name="my" position="35" length="2" /> <field name="group" position="37" length="19" /> <field name="info" position="56" length="4" /> </segment> <field name="source" position="60" length="12" /> <field name="integerOrderSource" position="78" length="1" /> <field name="activityBranch" position="112" length="4" /> </record> <record name="company" class="foo.Company" minOccurs="0" maxOccurs="1"> <field name="companyName" rid="true" literal="AB" position="0" length="2" /> <field name="companyName" position="2" length="29" /> </record> <record name="addressList" collection="list" class="foo.Addressline" minOccurs="0" maxOccurs="unbounded"> <field name="identifier" rid="true" literal="A" position="0" length="1" /> <field name="address" position="2" length="29" /> </record> </group> <record name="BRec" order="4" class="foo.Rec" minOccurs="0" maxOccurs="1"> <field name="identifier" rid="true" literal="B" position="0" length="1" /> <field name="record" position="1" length="unbounded" /> </record> <record name="TRec" order="5" class="foo.Rec" minOccurs="0" maxOccurs="1"> <field name="identifier" rid="true" literal="T" position="0" length="1" /> <field name="record" position="1" length="unbounded" /> </record> <record name="footer" order="6" class="foo.Footer" minOccurs="0" maxOccurs="1"> <field name="identifier" rid="true" literal="PID" position="0" length="3" /> </record> </stream>