繁体   English   中英

WSO2 迭代消息并将消息发送到消息存储

[英]WSO2 Iterate and send messages to a message store

我在 Enterprise Integrator 6.5 上。 我的代理接收带有文件内容和与之关联的元数据的有效负载。 所述元数据可以被发送成1个或多个片段。 我需要以上传成功响应前端,然后异步设置元数据。

所以我想出了这个解决方案:

  1. 上传文件到后台
  2. 从将消息发送到消息存储的有效负载中迭代元数据节点
  3. 响应前端

文件上传,元数据已设置但我无法在 Iterate 调解器执行后获取代码(这只是设置有效负载并去序列)。

我在文档中读到“您需要始终将迭代与聚合中介一起使用。” 但显然这意味着当您在 Iterate 中使用 Send 调解器时。 我的案例似乎不适合 ForEach 中介,因为文档说“仅将 ForEach 中介用于消息转换。如果您需要从每次迭代中进行后端调用,请使用 iterate 中介。” 此外,Iterate 调解器在我的情况下完美运行,我发现非常有用的 attachPath 和 preservePayload 属性。

你能帮我解决这个问题吗?

奇怪的事情:我在迭代调解器中设置了一个日志,但在日志中看不到它:/

这是我的代码:

[...]
<log level="full">
    <property name="status" value="outside iterate mediator"/>
</log>
<iterate attachPath="//nm:upload" expression="//nm:upload/metadata"
    preservePayload="true"
    xmlns:nm="http://www.i.com/uploadFileSAPProxy/" xmlns:ns="http://org.apache.synapse/xsd">
    <target>
        <sequence>
            <log level="full">
                <property name="status" value="inside iterate mediator"/>
            </log>
            <payloadFactory media-type="xml">
                <format>
                    <nm:upload
                        xmlns:b="http://ws.wso2.org/dataservice" xmlns:prx="urn:sap.com:proxy:Q01:/1SAI/TASF285B85AB4507D6C358B:702">
                        <id_group>$1</id_group>
                        <section>$2</section>
                         $3
        </nm:upload>
                </format>
                <args>
                    <arg evaluator="xml" expression="$ctx:id_group" literal="false"/>
                    <arg evaluator="xml"
                        expression="//nm:upload/metadata/section" literal="false"/>
                    <arg evaluator="xml"
                        expression="//nm:upload/metadata/values" literal="false"/>
                </args>
            </payloadFactory>
            <property name="messageType" scope="axis2" type="STRING" value="application/json"/>
            <property expression="json-eval($.upload)" name="result"
                scope="default" type="STRING"/>
            <payloadFactory media-type="json">
                <format>$1</format>
                <args>
                    <arg evaluator="xml" expression="$ctx:result" literal="false"/>
                </args>
            </payloadFactory>
            <axis2ns29:store
                messageStore="uploadFileSAP_v1_putMetadata_ms" xmlns:axis2ns29="http://ws.apache.org/ns/synapse"/>
        </sequence>
    </target>
</iterate>[...]

提前致谢!

我忘了设置 continueParent="true"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM