2012-09-27 42 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(); 

就我个人而言,我认为这是一个蹩脚的交易系统......但是你能做什么?这是如何完成的。