1

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

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

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

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

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

0 回答 0