ZooKeeperのApache Curator ライブラリは、優れた「流れるような」構文を使用します。たとえば、トランザクション内の複数のノードを変更するには、コードは次のようになります。
client.inTransaction().
.setData().forNode(node1Path, data1)
.and()
.SetData().forNode(node2Path, data2)
.and()
.commit();
これはうまく機能し、私見ですが、非常に読みやすいコードを生成します。しかし、トランザクションで一連の ZNode を変更しなければならない状況があります。いくつのノード、またはどのノードを変更する必要があるかは、実行時までわかりません。したがって、流暢な構文を簡単に使用できるとは思いません。ドキュメントを見ると、各流暢なメソッド呼び出しが返すプロキシ オブジェクトを手動で管理できますが、コードでは 、 、 などを明示的に使用する必要CuratorTransaction
がTransactionSetDataBuilder
ありCuratorTransactionBridge
ます。
Curator でトランザクションを行う非流暢な方法は見当たりません。実行時にトランザクションを構築するための「良い」方法があるかどうか、および/またはあるかどうかを知っている人はいますか? 具体的には、Map<String, String>
ZNode パスからその ZNode で終了する必要があるデータへのマッピングが与えられた場合、すべてのノードをどのようにトランザクション的に設定しますか?