有没有办法设置Grails服务的功能优先级?具体来说,我有一个非常低优先级的void事务函数,我希望它只在没有其他函数需要注意的情况下运行...有没有办法在Grails中执行此操作?
例如:
@Transactional
class SomeService {
void nonUrgentFunction() {
}
Object functionThatNeedsToHappenFast() {
}
}
非紧急功能使用一些对象来更新我的数据库,这些对象对于回顾和确定发生的事情非常有用。但是这个功能可以等待。它也很慢,因为它需要悲观锁定,并且可以通过数百台设备同时调用我的Web服务。
紧急功能有助于从我的Web服务呈现响应,这需要快速。如果有100台设备同时使用我的服务,我需要优先使用此功能...
Grails中的服务功能是否有优先设置方式?
答案 0 :(得分:0)
Grails在服务或服务方法调用中没有优先级的概念。这超出了Grails框架核心功能的范围。
但是,有很多方法可以实现这一目标。所有这些都取决于您的具体要求。
例如,您可以使用ThreadPoolExecutor和PriorityBlockingQueue来实现自己优先处理特定请求的方式。
您还可以使用JMS消息代理和具有各种队列和侦听器的消息来分发这些请求并根据队列管理其优先级。这将允许您将处理扩展到单个JVM之外。
这只是两个例子,还有很多其他方法可以实现这一点。
虽然这两种方法都可以帮助您实现您的目标,但在实施和整体功能方面却大不相同。最终,您的要求将决定哪种类型的解决方案符合您的需求。