【问题标题】:WSO2 Enterprise Integrator Sequence - Poll result after Asynchronous CallWSO2 Enterprise Integrator Sequence - 异步调用后的轮询结果
【发布时间】:2018-12-07 15:19:06
【问题描述】:

运行 WSO2 EI 6.2.0

我有一个 WSO2 EI ESB 的简单用例(序列):

  1. 从原始请求中提取一些参数
  2. 调用异步 REST API
  3. 从异步调用有效负载中提取执行 ID
  4. 轮询另一个同步 API 以根据执行 ID 检查执行状态
  5. 当 Sync API 表示请求已完成时停止轮询
  6. 从上次同步调用中提取一些参数
  7. 响应

我的问题在于 轮询 Sync API 直到它返回一些参数,表明之前的异步执行已完成。

这种轮询循环是否有任何 WSO2 EI 序列调解器?

【问题讨论】:

    标签: wso2 wso2esb wso2-am wso2ei


    【解决方案1】:

    ESB 中介(序列)并不是真正打算保持状态并等待任何事情。我相信甚至没有任何“do/while”循环的意图。我们有一个需要许多轮询步骤的项目,我们使用了一个流程服务器来执行此操作。所以 - 纯粹的调解很难完成你的要求。甚至你可以检查这个http://bsenduran.blogspot.com/2017/08/while-loop-in-wso2-esb.html

    我会提出一些你可以做的事情:

    • 编写自定义轮询调解器(我真的不建议这样做)
    • 使用进程服务器(需要额外的非轻量级服务器)
    • 将消息与消息处理器一起使用(将消息发送到队列,消息处理器将轮询、调用并发送回队列或响应)

    在所有情况下 - 如果客户端正在等待同步响应,您需要在客户端超时之前完成轮询。恕我直言,最好的选择是向客户返回一条消息(我们正在努力)并尽可能避免轮询..

    【讨论】:

    • 感谢您的洞察力。这是一个必须支持交互和非交互调用的通用调用。如果轮询时间超过 X 秒,我们的方法是向客户端返回一条消息(带有手动查询的 ID),以避免客户端超时和 esb 引擎上的资源锁定,如果没有同步回答。在阅读了很多和您的见解之后,我们可能会编写一个微服务来实现轮询和交互/非交互逻辑,并简单地让 ESB 同步调用微服务并等待它返回(最终响应与否)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    相关资源
    最近更新 更多