wso2 - 使 WSO2 ESB 迭代中介器同步

标签 wso2 wso2esb

下面的标记是我的迭代中介,它位于 WSO2 ESB 4.9.0 中设置的代理服务内。

我正在尝试遍历一系列表单提交并将它们发布到也在 ESB 中定义的 RESTful API。然而,即使我使用了 CALL 中介,API 日志显示我所有的迭代请求都以毫秒为间隔触发——这对我来说表明迭代中介实际上是在异步运行我的内联目标序列,尽管设置了 顺序=“真” .

有没有办法确保在迭代和提交另一个请求之前完成对我的 REST API 的调用?

 <iterate continueParent="true"
          id="IterateRequestSink"
          expression="//*[local-name()='Submission']"
          sequential="true">
    <target>
       <sequence>
          <property name="DISABLE_CHUNKING"
                    value="true"
                    scope="axis2"
                    type="STRING"/>
          <property name="HTTP_METHOD" value="POST" scope="axis2" type="STRING"/>
          <payloadFactory media-type="xml">
             <format>
                <params xmlns="">
                   <description>$1</description>
                   <return_call>$2</return_call>
                   <mobile>$3</mobile>
                   <sub_category>$4</sub_category>
                   <first_name>$5</first_name>
                   <last_name>$6</last_name>
                   <category>$7</category>
                </params>
             </format>
             <args>
                <arg evaluator="xml" expression="//*[local-name()='description']/text()"/>
                <arg evaluator="xml" expression="//*[local-name()='return_call']/text()"/>
                <arg evaluator="xml" expression="//*[local-name()='mobile']/text()"/>
                <arg evaluator="xml" expression="//*[local-name()='sub_category']/text()"/>
                <arg evaluator="xml" expression="//*[local-name()='first_name']/text()"/>
                <arg evaluator="xml" expression="//*[local-name()='last_name']/text()"/>
                <arg evaluator="xml" expression="//*[local-name()='category']/text()"/>
             </args>
          </payloadFactory>
          <property name="messageType"
                    value="application/x-www-form-urlencoded"
                    scope="axis2"
                    type="STRING"/>
          <call>
             <endpoint>
                <address uri="http://localhost:8280/crm/request" format="rest"/>
             </endpoint>
          </call>
          <log level="full"/>
       </sequence>
    </target>
 </iterate>

最佳答案

我正在使用调用调解器,但没有意识到有一个选项可以阻止请求。这已经解决了并发问题。

编辑
根据以下评论,这是为我解决问题的调用调解器:

<call blocking="true">
  <endpoint>
    <address uri="http://localhost:8280/crm/request" format="rest"/>
  </endpoint>
</call>

奇怪的是这个没有实际记录 在调用调解器的最新 WSO2 ESB 文档中,这有点无用。但是只需在中介配置 UI 中查找相关下拉列表,或者直接在源中设置上述选项。

关于wso2 - 使 WSO2 ESB 迭代中介器同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34010643/

相关文章:

esb - apache 突触自定义调解器

wso2 - 更新 WSO2 EI 6.6.0 中的 LocalEntry 内容

wso2 - 用作默认 WSo2 证书中的通用名称的“Localhost”创建未找到主题备用名称

wso2 - 在 WSO2 ESB API 资源中映射可选查询参数

wso2 - 事件在 wso2 esb 5.0.0 分析上不可见

wso2 key 管理功能

nosql - WSO2 DSS 是否支持 Memcache 和 Redis?

build - WSO2-APIM 建筑与修改碳 apimgt 子组件

wso2 - 当实际端点关闭时如何避免 wso2 esb 中的端点暂停

WSO2 API Manager 1.6.0 - 分布式环境在启动时相互阻塞