Flink有状态函数2.0能够进行异步调用,例如,对外部API的调用: [https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.0/sdk/java.html#completing-async-requests][1]。
然后,函数执行将暂停,直到调用成功,失败或未知完成。未知:
有状态功能已重新启动,可能在另一台计算机上, 在CompletableFuture完成之前,因此未知 异步操作的状态是什么。
第二次调用具有相同ID的暂停/等待功能时会发生什么?
答案 0 :(得分:2)
在异步请求完成时,功能执行不会暂停。该ID的实例将继续处理消息,直到请求完成。这意味着状态会在未来运行时发生变化。
将您的未来视为一个临时功能,您可以先发送消息,然后在收到结果后再发送消息。函数可以产生多个异步请求而不会出现问题。无论哪个先完成,都将首先由函数实例处理,而不必按其生成的顺序进行。