当前位置: 首页 > 知识库问答 >
问题:

MongoDB Panache多文档事务最佳实践

勾向文
2023-03-14
public void buyCarTest() {   
    carRepository.increaseStock(1); 
    cashRepository.decreaseCash(10000);
}
    null

这种方法充其量似乎是脆弱的,特别是当我要写入的存储库超过2个时。

多谢了。

共有1个答案

督飞羽
2023-03-14

你所提议的是所谓的补偿,实施起来很棘手。

为此,我宁愿使用基于事件的机制:您发送两个事件,然后异步地处理它们,这样一个承租人(股票管理器)的失败不会影响第二个承租人。

您也可以使用MongoDB transaction,但为此您需要使用MongoDB API而不是Panache(因此从您的实体获取集合并使用它)。

 类似资料:
  • 本文向大家介绍SpringDataMongoDB多文档事务的实现,包括了SpringDataMongoDB多文档事务的实现的使用技巧和注意事项,需要的朋友参考一下 一、安装MongoDB4.0.3(××) 1.1、官方安装文档 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 1.2、tar.gz包下载地址 h

  • 问题内容: 参考Spring文档: 任何RuntimeException都会触发回滚,而任何选中的Exception都不会 引用javapractices.com 未经检查的异常: 表示程序中的缺陷(错误)-通常将无效的参数传递给非私有方法。引用Gosling,Arnold和Holmes的《 Java编程语言》:“未经检查的运行时异常表示的条件通常可以反映程序逻辑中的错误,并且不能在运行时从中合理

  • 译者:cvley torch.multiprocessing 是 Python 的 multiprocessing 的直接替代模块。它支持完全相同的操作,但进行了扩展,这样所有的张量就可以通过一个 multiprocessing.Queue 进行传递,将数据移动到共享内存并只将句柄传递到另一个进程。 注意 当一个 Tensor 传递到另一个进程时,Tensor 的数据是共享的。如果 torch.T

  • torch.multiprocessing是Pythonmultiprocessing的替代品。它支持完全相同的操作,但扩展了它以便通过multiprocessing.Queue发送的所有张量将其数据移动到共享内存中,并且只会向其他进程发送一个句柄。 Note 当Variable发送到另一个进程时,Variable.data和Variable.grad.data都将被共享。 这允许实现各种训练方法

  • 问题内容: 我想启动许多要在+ -42Mio记录的数据库上运行的任务。我想批量运行5000条记录/时间(结果是850个任务)。我还想将线程数限制为16个,因此Java开始为我执行此操作,并且我正在使用当前代码来完成此任务: 这是正确的方法吗?特别是当我有一种印象,即Java会触发所有任务…(实现) 问题答案: 使用ExecutorService的第一部分看起来不错: 带有Thread的部分不应该在

  • 假设一个正在运行一个设置为并行的集群 使用每个任务槽运行多个TM 使用多个任务槽运行单个/几个TM 我们正在运行版本为1.6.3的Flink群集。Flink 1.7发行说明指出,“Flink现在正确地支持具有多个插槽的TaskManager”。在以前的版本中,是否建议从单个插槽开始?