gpt4 book ai didi

java - 如何使用 Spring Data 异步插入到 Cassandra 中?

转载 作者:行者123 更新时间:2023-11-30 06:08:55 25 4
gpt4 key购买 nike

在旧版本的 Spring Data Cassandra 中,批处理的实现如下:

String cqlIngest = "insert into person (id, name, age) values (?, ?, ?)";

List<Object> person1 = new ArrayList<Object>();
person1.add("10000");
person1.add("David");
person1.add(40);

List<Object> person2 = new ArrayList<Object>();
person2.add("10001");
person2.add("Roger");
person2.add(65);

List<List<?>> people = new ArrayList<List<?>>();
people.add(person1);
people.add(person2);

cassandraOperations.ingest(cqlIngest, people);

并在最新版本文档中; https://docs.spring.io/spring-data/cassandra/docs/current/reference/html/#repositories.query-methodsBatchOps 是在获取 CassandraBatchOperations 的 CQLTemplate 上引入的。但这个类似乎是实体感知的,如下所示

template.batchOps().insert(new User()).execute();

有没有办法传入 cqlIngest 和像上面给出的旧版本代码示例中的人?

我正在使用 Spring 2.0.7.RELEASE 和 Cassandra 驱动程序 3.5.0。

最佳答案

使用 Spring Data for Apache Cassandra 2.0,API 被重构和清理。

以前,模板 API 是低级和高级功能的混合体,同步和异步执行模型混合到单个类中。

自 2.0 版本以来,现在有以下 API 可用:

前一个 ingest 方法接受 CQL 字符串和参数 ListList。我们简化了这种情况,因为 ingest 在没有适当同步的情况下异步执行了 CQL。您可以通过AsyncCqlTemplate.execute(…)实现类似的功能:

ListenableFuture<Boolean> insert1 = template.execute("insert into person (id, name, age) values (?, ?, ?)", 
"10000", "David", 40);
ListenableFuture<Boolean> insert2 = template.execute("insert into person (id, name, age) values (?, ?, ?)",
"10001", "Roger", 65);

有两个区别:

  1. 您负责迭代参数
  2. 您会收到一个ListenableFuture,它允许您同步以实现成功和异常的执行。

关于java - 如何使用 Spring Data 异步插入到 Cassandra 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50664292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com