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的暂停/等待功能会发生什么?
功能执行不暂停在异步请求完成时。该ID的实例将继续处理消息,直到请求完成。这意味着状态会在未来运行时发生变化。
将您的未来视为即席函数,您可以先发消息,然后在收到结果后再发消息给您。函数可以产生多个异步请求而不会出现问题。无论哪个先完成,都将首先由函数实例处理,而不必按其生成的顺序进行。