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

在Reactive Vert.X中加入事务的优雅方式

孔扬
2023-03-14

假设我有一个服务方法,我在其中执行一些验证/REST调用等(例如,中的someServiceMethod2),并希望以事务方式使其安全。我还有一个repoMethod,它包含一个事务。当父事务引发异常时,如何回滚子事务?

有没有办法在一个事务中加入这两种方法?就像< code>TransactionDefinition。PROPAGATION _ REQUIRED PROPAGATION将在Spring lib中执行

fun someServiceMethod () {
    client.withTransaction { c ->
        val bla = someServiceMethod2() // works

        someRepo.doSthRepoStuff(bla)) // works

        throw Exception("Just for test purpose") // crashes -> should also rollback transaction from doSthRepoStuff
    }
}

...

fun doSthRepoStuff(bla : String) {
    client.withTransaction { c -> 
        // do db related stuff here
    }
}

我现在唯一能做的就是只使用服务事务,并将连接传递给回购方法。这对我来说有点奇怪(给一个repo方法一个sql连接)

有没有优雅的方法来解决这个问题?

共有1个答案

葛勇锐
2023-03-14

我花了很多时间来弄清楚这一点,而我能够做到这一点的唯一方法是通过传递下一个类的对象

< code > io . vertx . react vex . sqlclient . sqlconnection

这个工作非常顺利。

 类似资料:
  • 我目前正在开发JavaFX中的计算器,现在正在尝试实现键盘输入支持。 为此,我试图在主. java文件中实现一个EventHandler,如下所示: FXMLDocumentController。java: 现在的问题是,每当按下这些键时,都会发生与我在GUI中单击相应按钮时相同的事情。 所有数字按钮共享一个onAction事件, ,-,/,* 也共享一个,等等。它们都使用FXMLDocument

  • 我正在将代码从EJB迁移到Spring-Hibernate。如果发生故障,如何加入事务并回滚?下面是EJB中的代码: 更新1:我们如何连接发生在不同数据库上的两个事务?有2个事务需要原子地执行。如果第二个事务失败,则必须回滚第一个事务。对此如何落实?

  • 问题内容: 我有一个在测试中可以正常运行的系统,但是现在我已经将它们移至生产服务器,并准备抛出开关,我遇到了问题。 如果应用程序闲置约15分钟,则spring事务服务中的数据库连接将断开。发生这种情况后,第一个进入应用程序的人会受到欢迎 如果您在浏览器中点击F5,它将重新连接并正常运行。看起来spring在按照第一个请求进行操作时,请继续努力,我死了,在死亡过程中,重新连接到数据库。但我不确定。

  • 问题内容: 经过大量搜索,我发现有几种方法可以向现有实例对象添加绑定方法或未绑定类方法 此类方法包括以下代码采用的方法。 让我烦恼的是,输入该函数的名称,或两次。 有什么简单的方法可以将现有功能添加到类或实例中,而无需再次键入该功能的名称? 例如, 将现有功能添加到实例或类将是一种非常优雅的方法,因为该功能已经具有属性。 问题答案: 通常,当您使用点分访问查找对象字典时,存储在对象字典中的函数不会

  • 问题内容: 我有一类关于物体的东西……拉特说苹果。 每个苹果对象都必须具有唯一的标识符(id)…如何(高效且有效率地)确保新创建的对象具有唯一的ID。 谢谢 问题答案: 在Apple类中有一个,并在构造函数中增加它。 确保您的递增代码是原子的可能是谨慎的做法,因此您可以执行以下操作(使用AtomicInteger)。这将确保如果两个对象完全同时创建,则它们不会共享相同的ID。

  • 本文向大家介绍详解Springboot 优雅停止服务的几种方法,包括了详解Springboot 优雅停止服务的几种方法的使用技巧和注意事项,需要的朋友参考一下 在使用Springboot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。 我们很多时候都需要安全的将服务停止,