【发布时间】:2015-01-14 19:57:06
【问题描述】:
ZooKeeper 的Apache Curator library 使用了一种很好的“流畅”语法。例如,要修改事务中的多个节点,代码如下所示:
client.inTransaction().
.setData().forNode(node1Path, data1)
.and()
.SetData().forNode(node2Path, data2)
.and()
.commit();
这很好用,而且恕我直言,生成的代码非常易读。但是,我有一种情况,我必须在事务中修改一组 ZNode。直到运行时我才知道需要修改多少节点或哪些节点。因此,我认为我不能轻松地使用流利的语法。查看文档,我可以手动管理每个流畅的方法调用返回的代理对象,但是代码需要显式使用CuratorTransaction、TransactionSetDataBuilder、CuratorTransactionBridge 等。这显然是可行的,但是代码开始看起来很丑。
我没有看到与 Curator 进行交易的非流畅方式。有谁知道是否有一个和/或是否有一种“好”的方式在运行时构建事务?具体来说,给定一个从 ZNode 路径到最终需要在该 ZNode 中的数据的 Map<String, String> 映射,您将如何以事务方式设置所有节点?
【问题讨论】:
标签: java apache-zookeeper apache-curator