我尝试了以下步骤:
1.使用Gatlin和Arango Java驱动程序,我尝试创建一个具有并发用户的集合。
2.由于多个线程同时尝试创建集合,因此我遇到了重复名称错误。
是否有任何机制可以在Arango中实现事务机制,允许单个线程创建集合并在该过程期间锁定其他线程。
1.使用Gatlin和Arango Java驱动程序,我尝试创建一个具有并发用户的集合。
2.由于多个线程同时尝试创建集合,因此我遇到了重复名称错误。
是否有任何机制可以在Arango中实现事务机制,允许单个线程创建集合并在该过程期间锁定其他线程。
同时创建具有相同名称的集合可能会导致重复名称错误。
与插入、删除、更新和查询文档不同,创建、删除和重命名集合不能成为 ArangoDB 事务的一部分。
因此,在并行创建集合时会出现一些竞争情况,目前处理它们的唯一正确方法是检查集合创建响应的返回代码。响应将清楚地指示集合创建是否成功,或者是否存在重复名称错误。应用程序可以适当地处理错误,通过中止操作或选择其他名称来解决问题。
synchronized
方法来创建集合。在该方法中,您可以在创建之前检查集合是否已存在。public synchronized void createCollection(ArangoDatabase database, String collection) {
if (!database.getCollections().stream().map(c -> c.getName()).anyMatch(c -> c.equals(collection)) {
database.createCollection(collection);
}
}