performance - 如何使afterInsert/afterUpdate GORM方法成为异步方法

标签 performance grails asynchronous aop

Grails用户知道,该框架的数据访问层通过与其他软层(afterInsertafterUpdatebeforeInsert ....方法)分离的跨层提供AOP编程。

   class Person{

    def afterInsert(){
        //... Will be executed after inserting record into Person table
     }
  }
我在构造方法(实例化)上搜索此方法的类型:异​​步而不是。而且我找不到答案。
我的问题是:如果没有,如果我们强制将这些方法异步化,那么GORM是否会被破坏?
更新:
确实,由于我们拥有自己的API,我们希望不使用现成的插件就发送邮件。

最佳答案

有很多方法可以完成您要寻找的内容,并且不了解您的所有要求,很难为您提供满足所有要求的解决方案。但是,根据您的问题和提供的评论,您可以使用Grails中内置的Asynchronous features完成此操作。

这只是我脑海中想出的东西的草图/示例。

import static grails.async.Promises.*
class Person {
  ...
  def afterUpdate() {
    def task1 = task {
      // whatever code you need to run goes here.
    }
    onComplete([task1]) {
      // anything you want to run after the task completes, or nothing at all.
    }
  }
  ...
}

这只是一个选择。同样,您有很多选择。您可以改为发送JMS消息,并在其他计算机上对其进行处理。您可以使用某种类型的事件系统,甚至可以使用Spring AOP和线程池并将其进一步抽象。这取决于您的要求以及您的能力。

关于performance - 如何使afterInsert/afterUpdate GORM方法成为异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25907524/

相关文章:

c# - 我的任务没有等待完成

performance - 推理 Haskell 的性能

plugins - 有没有办法查看我所有应用程序的插件依赖关系?

grails - 在Grails中使用旧Neo4j数据库

javascript - 如何使用异步操作 WinJS 在 for 循环后执行操作

javascript - Node 异步未运行异步

c# - 大数据量TreeView优化

Python: `dist` 和 `sdist` 之间有性能差异吗?

java - 使用 MTJ/Netlib( native )的缓慢矩阵乘法性能

grails - 如何使用@Build为Grails集成测试创建多种类型的测试数据