Мы получим большое количество маленьких xml файлов, мы хотели бы объединить все эти файлы только в один xml файл перед его обработкой.
Мы пытались сделать это с помощью посредника Aggregate, но это не работает, потому что мы не используем посредник iterate или clone.
Вот пример использования прокси, который опрашивает каталог. Когда прокси потребляет 3 сообщения, агрегатор правильно объединяет сообщения, но мы никогда не попадаем в onComplete. Сообщение журнала «внутри onComplete» не появляется, и последовательность «TestAggregateSend» не выполняется.
<proxy name="TestAggregateProxyService" startOnLoad="false" transports="https http vfs" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="full">
<property name="DEBUG" value="start inSequence"/>
</log>
<aggregate id="sa">
<correlateOn expression="//ABC"/>
<completeCondition timeout="60">
<messageCount max="3" min="-1"/>
</completeCondition>
<onComplete expression="//ABC" sequence="TestAggregateSend">
<log level="full">
<property name="DEBUG" value="inside onComplete"/>
</log>
</onComplete>
</aggregate>
<log level="full">
<property name="DEBUG" value="end inSequence"/>
</log>
</inSequence>
<outSequence>
<log level="full">
<property name="DEBUG" value="inside outSequence"/>
</log>
<sequence key="TestAggregateSend"/>
</outSequence>
<faultSequence/>
</target>
<parameter name="transport.PollInterval">5</parameter>
<parameter name="transport.vfs.FileURI">file:///var/wso2/test/in</parameter>
<parameter name="transport.vfs.ContentType">text/xml;charset=UTF-8</parameter>
<parameter name="transport.vfs.FileProcessInterval">1000</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.xml</parameter>
According to logs, the merge works, but it is impossible to do any action in the onCompete
DEBUG {org.apache.synapse.mediators.eip.aggregator.AggregateMediator} — объединенный результат:
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body>
<ABC>
<DEF>1</DEF>
<GHI>2</GHI>
</ABC>
<ABC>
<PQR>5</PQR>
<STU>6</STU></ABC>
<ABC>
<JKL>3</JKL>
<MNO>4</MNO></ABC>
Можно ли объединить несколько файлов с помощью посредника Aggregate? Есть ли другой способ объединить файлы xml с помощью WSO ESB?