Lagom Scala Cassandra readside中的批量插入

Lagom Scala Cassandra readside中的批量插入,scala,cassandra,akka,lagom,Scala,Cassandra,Akka,Lagom,我在谷歌上搜索过,但除了卡桑德拉的阅读侧文档页面外,没有任何链接。所以,我只想问一下Akka Cassandra包中是否已经包含了任何API或函数用于批量行插入,或者我必须多次调用插入代码以进行多行插入 注意:-我不是要插入多个事件,我只是想以密钥对格式存储一些json数据。因此,包含Json对象的单个事件可能需要多行。在PHP和其他语言中,我们可以提供一个具有多行的数组,但是Akka的Cassandra驱动程序实现如何提供这一点呢?Lagom的读取端一次处理一个事件。只有在将事件保留在内存中并

我在谷歌上搜索过,但除了卡桑德拉的阅读侧文档页面外,没有任何链接。所以,我只想问一下Akka Cassandra包中是否已经包含了任何API或函数用于批量行插入,或者我必须多次调用插入代码以进行多行插入


注意:-我不是要插入多个事件,我只是想以密钥对格式存储一些json数据。因此,包含Json对象的单个事件可能需要多行。在PHP和其他语言中,我们可以提供一个具有多行的数组,但是Akka的Cassandra驱动程序实现如何提供这一点呢?

Lagom的读取端一次处理一个事件。只有在将事件保留在内存中并在超时后或集合足够大时保留批处理,才能进行批处理插入。这种方法容易发生数据丢失或最多一次语义,因为在崩溃的情况下,事件流将考虑所消耗的事件,但是内存中的数据将不被持久化。 Lagom默认值使每个事件处理成为单个事务,其中包括用户提供的代码,用于更新Lagom中的读取边表和偏移存储。当用户提供的所有操作都发生在事务中时,这种方法允许有效的一次读取端处理

目前,建议的方法是切分持久实体标记,以便可以从多个读端处理器实例并行使用持久实体事件流。使用该解决方案,每个实例将一次处理一个事件,但许多实例将分布在您的集群中。

CassandraSession公开了批处理写入所需的所有内容,即随后是

大概是这样的:

PreparedStatement ps = session.prepare(...);
BatchStatement batch = new BatchStatement();
batch.add(ps.bind(...));
batch.add(ps.bind(...));
session.executeWriteBatch(batch);

也就是说,请注意,使用CassandraReadSide构建的读取端处理程序需要从事件处理程序方法返回一个列表。Lagom将自动批量执行这些语句。

对不起,@ignasi35您以不同的方式理解了我的问题,我已经更新了问题。谢谢@pazustep。您也可以分享示例Scala代码吗?当我们通过调用batch.add.更改同一对象中的数据时,它是否支持不变性。。?