【发布时间】:2021-08-03 19:48:56
【问题描述】:
我有一个向 Cassandra 数据库添加数据的简单方法:
def addData(data: SomeData): Task[Either[Exception, Unit]]
我用它把相同的数据添加到同类型的两个表中:
for {
persistOneTable <- repo.addData(data).mapError(SomeError(_))
persistSecondTable <- repo2.addData(data).mapError(SomeError(_))
} yield ()
我的问题是,如果第一次失败,我应该如何更改此代码以重试插入表?我不想在表中有不一致的数据,所以如果在插入第一个表后失败,我想重试它,然后插入到第二个表并在那里重试,直到它被添加到两个表中都有完全相同的数据
【问题讨论】:
-
您是否只想在
Task失败时重试?还是Either中的Exception也表示应该重试? -
仅当
Task失败时。
标签: scala cassandra nosql scala-cats zio