【问题标题】:Merge xml files using Aggregate mediator使用聚合中介器合并 xml 文件
【发布时间】:2018-03-01 16:28:54
【问题描述】:

我们会收到大量的小 xml 文件,我们希望在处理之前将所有这些文件合并到一个 xml 文件中。

我们尝试使用 Aggregate mediator 来做到这一点,但它不起作用,因为我们不使用 iterate 或 clone mediator。

这是一个使用轮询目录的代理的示例。当代理消费 3 条消息时,聚合器会正确合并消息,但我们永远不会进入 onComplete。没有出现“inside 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>

根据日志,合并有效,但无法在 onCompete 中执行任何操作

调试 {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 mediator 合并多个文件?有没有其他方法可以使用 WSO ESB 合并 xml 文件?

【问题讨论】:

  • 能否提供一些 xml 示例文件和 TestAggregateSend 序列?
  • 这里有 3 个带有肥皂信封的 xml 样本 schemas.xmlsoap.org/soap/envelope/"><soapenv:Body> 12schemas.xmlsoap.org/soap/envelope/"><soapenv:Body> 34schemas.xmlsoap.org/soap/envelope/"><soapenv:Body> 56信封>

标签: wso2 aggregate mediator


【解决方案1】:

当 EI 6.1.1 中的 correlateOn 不为空时,聚合中介器不起作用。 v2.1.7-wso2v16 中修复的问题

https://github.com/wso2/wso2-synapse/commit/797021df20c92d90a6d5f67185cebc5bab4c7717#diff-2b94f68abf9ec06aca94d6524af82513

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    相关资源
    最近更新 更多