【问题标题】:WSO2 ESB: How to make Iterate mediator wait for a response before sending the next requestWSO2 ESB:如何让迭代调解器在发送下一个请求之前等待响应
【发布时间】:2012-09-27 04:37:30
【问题描述】:

让 Iterate 调解器工作并将其调出到另一个外部端点几乎没有问题。但是,在我看来(通过记录),无论我将 Sequencing 设置为 True 还是 False,ESB 都会相当快地发送所有请求。这种快速发送请求似乎导致我的端点指向的外部 Web 服务出现问题。如果我在 xml 中有 1 项供 Iterate 工作,那么一切都很好。但是如果我迭代 2 次或更多,我会得到各种错误。

这就是为什么我想知道是否可以让 Iterate 调解器调用此外部端点,等待响应,然后使用下一个请求调用外部端点。如何使用 WSO2 ESB 实现这一目标?

如果我必须使用代码执行此操作,我会将请求放入一个数组并设置一个具有数组大小的计数器。然后我将从数组中获取第一项并调用 Web 服务。当响应返回时,我将首先将其放入结果数组中。将计数器加 1。然后我检查请求数组中是否还有更多项,如果有,则进行下一次调用。

【问题讨论】:

    标签: wso2 wso2esb esb


    【解决方案1】:

    我认为您可以使用“呼叫”调解器或使用“呼叫”调解器将阻止模式设置为 true。 有关更多信息,请参阅以下链接: https://docs.wso2.com/display/ESB490/Call+Mediator

    【讨论】:

      【解决方案2】:

      尝试在呼叫中介中使用属性blocking="true",如下所示,

      <call blocking="true">
       <endpoint key="yourEndpointName"/>
      </call>
      

      这应该可以解决问题。

      谢谢,希望对你有帮助

      【讨论】:

        【解决方案3】:

        我认为您可以使用 Flag 变量(属性中介):

        我会在 Insquence 中添加一个名为 STATUS 的属性调解器,设置为“request_iterate”,稍后在 OutSequence 中,您可以创建一个 Switch 调解器,其中第一个案例匹配“request_iterate”和一个调用端点的发送调解器,在它设置之后属性('STATUS')到“response_iterate”。案例 2 将匹配“response_iterate”并在响应后执行您必须执行的任何操作。

        如果您遇到时间问题,您可以使用消息存储和消息处理器来实现节流方案。

        注意:消息模式通常用于异步操作

        希望有帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-06
          • 1970-01-01
          • 2021-12-22
          • 2015-07-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多