策展人:承诺交易

时间:2012-09-27 18:25:33

标签: java apache-curator

Apache Curator的CuratorFramework类实例允许运行变异操作inTransaction()。我目前正在使用这些调用,但无法弄清楚如何提交它们。

查看CuratorTransaction JavaDoc,它明确指出:

  

重要:
  在调用CuratorTransactionFinal.commit()之前,不会提交操作。

但是,CuratorTransactionFinal是一个没有实现类的接口(我可以找到)。

我是否希望实施它并定义commit()的功能?
或者我错过了一些更大的概念?

1 个答案:

答案 0 :(得分:3)

在源代码中找到它:

假设您的CuratorFramework实例名为“client”。

如果你执行像...这样的操作。

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

......这不是交易性的。如果你执行......

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

......确实如此,但在提交事务之前,操作实际上不会完成。我已经知道了这么多。要提交交易,请执行以下操作:

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