2

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

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

如果我必须用代码来做这件事,我会把请求放在一个数组中,并用数组的大小设置一个计数器。然后我将从数组中获取第一项并调用 Web 服务。当响应回来时,我会先把它放在结果数组中。将计数器加 1。然后我检查请求数组中是否有更多项目,如果有,则进行下一次调用。

4

3 回答 3

0

我认为您可以使用 Flag 变量(属性调解器):

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

如果您遇到时间问题,您可以使用消息存储和消息处理器来实现限制场景。

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

希望这有帮助

于 2012-10-08T13:24:45.457 回答
0

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

于 2016-10-31T03:21:34.760 回答
0

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

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

这应该可以解决问题。

谢谢,希望对你有帮助

于 2016-10-17T03:13:55.363 回答