我對演員模型頗爲陌生,這就是爲什麼我認爲已經建立了模式來解決我的常見問題,演員和期貨等美麗的可組合抽象。如何使用actors來實現異步相互獨立的可取消操作?
我有異步操作符合下列要求:
- 他們通過發送一個低級別的請求,然後監測實體的狀態輪詢使用遺留系統。因此,實際操作的結果只能以延遲方式提供,當觀察狀態達到所需狀態時,必須通知請求者。
- 這些操作只有在一些其他操作完成後才能發出,這些操作應該並行等待。
- 操作可以取消。當然,已經發布的低層請求不能被撤銷;取消意味着在我們依賴完成的操作完成後不發出實際操作,當然這必須以遞歸方式傳播(如果我們等待依賴關係,並且它有多個掛起操作,請不要發佈它們)。
我在期貨中的想法:第一個要求可以通過例如, Akka的map
/flatMap
,第二個與traverse
組合器沒有依賴程序地維護/依賴。但我想不出取消的解決方案;期貨不能取消,如果組成,他們的組成部分是不可及的。如何封裝「取消當前操作」以功能的方式? Scala的任何Actor框架是否支持這個?
爲什麼這個問題只有1個投票超出了我的理解。近3年後,仍然沒有很好的答案。 – axiopisty