Flink Stateful Functions 2.0 异步等待期间多次调用

Flink Stateful Functions 2.0 Multiple Calls During Asynchronous Wait

Flink Stateful Functions 2.0 具有进行异步调用的能力,例如对外部 API: [https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.0/sdk/java.html#completing-async-requests][1].

然后暂停函数执行,直到调用完成并显示成功、失败或未知。未知是:

The stateful function was restarted, possibly on a different machine, before the CompletableFuture was completed, therefore it is unknown what is the status of the asynchronous operation.

当第二次调用具有相同 ID 的 paused/waiting 函数时会发生什么?

  1. 然后被调用者是否等待被调用函数的处理 它的异步结果使得这第二个调用以干净的方式执行, 非共享 post-异步状态?
  2. 或者第二次调用是在 正常的时间表,因此在当前状态之上 异步调用,然后当异步调用完成时它继续 使用异步调用时更新的状态进行处理 待定?
  3. 或者呼叫可能算作被呼叫者的 "restart" 函数 - 在这种情况下执行顺序是什么: "restart" 运行,然后异步 returns 和 "restart" 执行 从现在更新的状态,或者这个顺序是相反的?
  4. 还是别的?

函数执行不会在异步请求完成时暂停。该 ID 的实例将继续处理消息,直到请求完成。这意味着状态可以改变,而未来是 运行.

将您的未来想象成一个临时功能,您可以发送消息,然后在有结果时向您发送消息。函数可以毫无问题地产生多个异步请求。无论哪个 future 先完成,都将首先由函数实例处理,不一定是它们生成的顺序。