问题描述
我的 Grails 4.0.10 应用程序需要调用外部服务。调用最多可能需要 3 分钟,因此它必须是异步的。在阅读了 doco 之后,我写了一个非阻塞服务方法来使用 Promise 执行调用,没有太多麻烦。
文档描述了如何显示异步结果。
就我而言,结果会影响数据库。我必须创建新的域对象,修改现有的域对象并将结果保存在 onComplete
闭包中。 doco 对如何做到这一点相当沉默。
这些是我对 onComplete
闭包的假设。我的问题是:这些假设有效吗?这是正确的做法吗?
- 没有注入的东西可用,服务和(例如)
log
都没有——您通常在服务中期望的东西 - 如果使用多租户,数据库逻辑必须首先包含在
Tenants.withId
中,然后包含在withTransaction
中 -
withTransaction
以域名为前缀。但是,其他域可以在同一个闭包中自由操作和持久化 - 在异步调用之前选择的域实例可以像这样
instance.attach()
附加到当前会话,然后修改和保存 - 如果需要日志记录,创建一个新的日志实例
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)