如何解决春季数据空中加息|在整个事务回滚的情况下如何实现回滚
用例:-
我们正在使用Spring-data-aerospike来获取并保存航空记录。
问题:-我们正在将SAVE执行到两个不同的航空突刺组中,并且这两个SAVES应该以事务方式进行,即,如果第二次写入失败,那么第一次写入也应该回滚。
这里的代码段看起来像:-
val request = Request.Builder()
.url("http://publicobject.com/helloworld.txt")
.build()
// Coroutines not supported directly,use the basic Callback way:
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call,e: IOException) {
e.printstacktrace()
}
override fun onResponse(call: Call,response: Response) {
response.use {
if (!response.isSuccessful) throw IOException("Unexpected code $response")
for ((name,value) in response.headers) {
println("$name: $value")
}
println(response.body!!.string())
}
}
})
这是我们要实现的目标,目前尚无法解决:-
@Document(collection = "cust",expiration = 90,expirationUnit = TimeUnit.DAYS)
public class Customer {
@Id
@Field(value = "PK")
private String custId;
@Field(value = "mobileNumber")
private String mobileNumber;
}
@Document(collection = "custDetails",expirationUnit = TimeUnit.DAYS)
public class CustomerDetails {
@Id
@Field(value = "PK")
private String custDetailsId;
@Field(value = "addnDetails")
private Map additionalDetails;
}
@Repository
public interface CustomerRepository extends AerospikeRepository<Customer,String> {}
@Repository
public interface CustomerDetailsRepository extends AerospikeRepository<CustomerDetails,String>{}
@Autowired
AerospikeTemplate aerospikeTemplate;
这里的依赖项看起来像:-
@Transactional(isolation = Isloation.SERIALIZABLE,rollbackFor=Exception.class)
public ResponseDTO<String> updateCustomer(CustomerUpdateRequest custUpdateReqDTO) {
Optional<Customer> cust = customerRepository.findById(custUpdateReqDTO.getCustId());
// Update Business logic of Customer Record.
aerospikeTemplate.update(cust);
Optional<CustomerDetails> custDet = customerDetailsRepository.findById(custUpdateReqDTO.getCustDetId());
// Update Business logic of CustomerDetails Record.
aerospikeTemplate.update(custDet);
}
问题:-
我们知道,Spring事务注释可用于RDBMS!在这种情况下,如何使事务性属性在这里工作?
任何帮助或建议都将受到高度赞赏!
解决方法
Aerospike仅对单个记录提供事务支持。您将需要在应用程序内部执行插入回滚逻辑以获取多个记录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。