Grails 4 与数据库操作的异步

问题描述

我的 Grails 4.0.10 应用程序需要调用外部服务。调用最多可能需要 3 分钟,因此它必须是异步的。在阅读了 doco 之后,我写了一个非阻塞服务方法来使用 Promise 执行调用,没有太多麻烦。

文档描述了如何显示异步结果。

就我而言,结果会影响数据库。我必须创建新的域对象,修改现有的域对象并将结果保存在 onComplete 闭包中。 doco 对如何做到这一点相当沉

这些是我对 onComplete 闭包的假设。我的问题是:这些假设有效吗?这是正确的做法吗?

  1. 没有注入的东西可用,服务和(例如)log 都没有——您通常在服务中期望的东西
  2. 如果使用多租户,数据库逻辑必须首先包含在 Tenants.withId 中,然后包含在 withTransaction
  3. withTransaction 以域名为前缀。但是,其他域可以在同一个闭包中自由操作和持久化
  4. 在异步调用之前选择的域实例可以像这样instance.attach() 附加到当前会话,然后修改和保存
  5. 如果需要日志记录,创建一个新的日志实例

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...