2012-09-27 107 views
2

Netflix Curator的CuratorFramework對象實例允許在「inTransaction()」中運行變異操作。我目前正在使用這些調用,但是在我的生活中,現在不知道如何提交它們,現在我已經做了一堆。Netflix策展人:提交交易

看着CuratorTransaction javadoc(在這裏找到:http://netflix.github.com/curator/doc/com/netflix/curator/framework/api/transaction/CuratorTransaction.html),它明確指出:「重要提示:在調用CuratorTransactionFinal.commit()之前不會提交操作。」然而,CuratorTransactionFinal是一個沒有實現類的接口(我可以找到)。

我是否期望實現它並定義commit()的功能?或者我錯過了一些更大的概念?

感謝

回答

2

在源代碼中發現:

假設您的CuratorFramework的實例被稱爲 「客戶」。

如果您執行操作一樣......

client.create().forPath("/foo"); 

...這不是事務性的。如果你執行...

client.inTransaction().create.forPath("/foo"); 

......這是,但操作將不會實際上完成,直到您提交交易。這我已經知道了。要進行交易,你需​​要:

client.inTransaction().create().forPath("/foo") 
    .and().create().forPath("/bar") 
    .and().commit(); 

就我個人而言,我認爲這是一個蹩腳的交易系統......但是你能做什麼?這是如何完成的。