[英]Can I set priority of transactional function of a Grails service?
有没有办法设置Grails服务的功能的优先级? 具体来说,我有一个非常低优先级的void事务函数,我希望它只在没有其他函数需要注意时运行...有没有办法在Grails中执行此操作?
例如:
@Transactional
class SomeService {
void nonUrgentFunction() {
}
Object functionThatNeedsToHappenFast() {
}
}
非紧急功能使用一些对象来更新我的数据库,这些对象对于回顾和确定发生的事情非常有用。 但是这个功能可以等待。 它也很慢,因为它需要悲观锁定,并且可以通过数百台设备同时调用我的Web服务。
紧急功能有助于从我的Web服务呈现响应,这需要快速。 如果有100台设备同时使用我的服务,我需要这个功能优先...
有没有办法为Grails中的服务功能设置优先级?
Grails在服务或服务方法调用中没有优先级的概念。 这超出了Grails框架核心功能的范围。
但是,有很多方法可以实现这一目标。 所有这些都取决于您的具体要求。
例如,您可以使用ThreadPoolExecutor和PriorityBlockingQueue来实现自己的方法,为特定请求赋予优先级。
您还可以使用JMS消息代理和具有各种队列和侦听器的消息来分发这些请求并根据队列管理其优先级。 这将允许您将处理扩展到单个JVM之外。
这只是两个例子,还有很多其他方法可以实现这一点。
虽然这两种方法都可以帮助您实现您的目标,但在实现和整体功能方面却完全不同。 最终,您的要求将决定哪种类型的解决方案适合您的需求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.