2016-09-15 48 views
0

我有適用於Couchbase的微服務。我的服務必須向Couchbase詢問當前ID有多少個文檔:如果數量很少,我會創建另一個文檔。在Scala和Akka中按正確的順序執行任務,無阻塞

我的問題是,這是非阻塞的:如果我在第一次創建文檔時有很多請求,第二個請求表明文檔的數量很低(因爲先不要創建但文件),所以另一個新文件被創建。

爲了解決這個問題,我在akka中創建了一個演員系統,每個id有一個演員,阻塞(等待)直到第一個完成。這給出了我想要的順序。有一個更好的方法嗎?

但是我有這個問題,當我把卡夫卡製作人添加到這個「等待」未來時,當卡夫卡倒臺時,這個未來阻塞了很長時間,以至於我等待了等待。我把這個生產者放在Future中,但在此之後,我的Executor上下文中沒有多少線程。

+0

澄清的措辭;修正了語法錯誤。 – Prune

回答

0

我認爲你可以使用斷路器位置:http://doc.akka.io/docs/akka/snapshot/common/circuitbreaker.html

我通常使用這個時候我在做外部服務調用,其中該服務具有不可用的傾向。

+0

電路斷路器不適合我的問題。在這種情況下我需要正確的順序,除非是好的,否則不要問 –