Grails 2.4.3 - 异步编程@DelegateAsync

时间:2016-11-16 15:33:03

标签: grails asynchronous

假设以下情况......

  • 我必须执行一个花费大量时间(约1小时)的过程 我不希望我的应用程序的用户等到它结束。
  • 此流程的业务逻辑封装在多个服务中。

所以:

class MyService{

    def myService2
    def myService3

    public doSomething(){ 
       myService2.doSomething()
       myService3.doSomething()
    }
}

class MyController{

    def myService

    def anAction(){
       myService.doSomething()
       redirect(action:'index')
    }
}
  • 我希望对我的服务的调用是异步的。

我尝试使用 @DelegateAsync 创建Grails文档所示的异步服务。

class AsyncMyService {

    @DelegateAsync MyService myService

}

 class MyController{

    def asyncMyService

    def anAction(){
       asyncMyService.doSomething()
        .onComplete { List results ->
           println "completed!"             
        }
       redirect(action:'index')
    }
}

但是在编译我的应用程序时出现以下错误:

Caused by ConversionNotSupportedException: Failed to convert property value of type 
'MyService2$$EnhancerBySpringCGLIB$$f08a1b38' to equired type 'grails.async.Promise' 
for property 'myService2'; nested exception is java.lang.IllegalStateException: Cannot 
convert value of type [MyService2$$EnhancerBySpringCGLIB$$f08a1b38] to required type 
[grails.async.Promise] for property 'myService2': no matching editors or conversion 
strategy found

有什么想法可以解决这个问题吗?

谢谢!

0 个答案:

没有答案