我可以设置 Grails 服务的事务功能的优先级吗?
Can I set priority of transactional function of a Grails service?
有没有办法设置 Grails 服务函数的优先级?具体来说,我有一个优先级很低的 void 事务函数,我希望它 运行 只有在没有其他函数需要注意的时候...有没有办法在 Grails 中做到这一点?
例如:
@Transactional
class SomeService {
void nonUrgentFunction() {
}
Object functionThatNeedsToHappenFast() {
}
}
非紧急功能使用一些对象更新我的数据库,这些对象对于回顾和确定发生了什么很有用。但是这个功能可以等待。而且它也很慢,因为它需要悲观锁定,并且可以被数百个访问我的网络服务的设备同时调用。
urgent 函数有助于呈现来自我的 Web 服务的响应,这需要快速。如果 100 台设备同时访问我的服务,我需要此功能优先...
Grails 中是否有为服务功能设置优先级的方法?
Grails 在服务或服务方法调用中没有优先级的概念。这超出了 Grails 框架核心功能的范围。
但是,有很多方法可以实现这一点。所有这些都取决于您的具体要求。
例如,您可以使用 ThreadPoolExecutor and a PriorityBlockingQueue 来实施您自己的方法来优先处理特定请求。
您还可以使用 JMS 消息代理和具有各种队列和侦听器的消息来分发这些请求并根据队列管理它们的优先级。这将允许您将处理扩展到单个 JVM 之外。
这只是两个示例,还有许多其他方法可以实现。
虽然这两种方法都可以让您完成您想要做的事情,但在实施和整体功能方面它们有很大不同。最终,您的要求将决定哪种类型的解决方案适合您的需求。
有没有办法设置 Grails 服务函数的优先级?具体来说,我有一个优先级很低的 void 事务函数,我希望它 运行 只有在没有其他函数需要注意的时候...有没有办法在 Grails 中做到这一点?
例如:
@Transactional
class SomeService {
void nonUrgentFunction() {
}
Object functionThatNeedsToHappenFast() {
}
}
非紧急功能使用一些对象更新我的数据库,这些对象对于回顾和确定发生了什么很有用。但是这个功能可以等待。而且它也很慢,因为它需要悲观锁定,并且可以被数百个访问我的网络服务的设备同时调用。
urgent 函数有助于呈现来自我的 Web 服务的响应,这需要快速。如果 100 台设备同时访问我的服务,我需要此功能优先...
Grails 中是否有为服务功能设置优先级的方法?
Grails 在服务或服务方法调用中没有优先级的概念。这超出了 Grails 框架核心功能的范围。
但是,有很多方法可以实现这一点。所有这些都取决于您的具体要求。
例如,您可以使用 ThreadPoolExecutor and a PriorityBlockingQueue 来实施您自己的方法来优先处理特定请求。
您还可以使用 JMS 消息代理和具有各种队列和侦听器的消息来分发这些请求并根据队列管理它们的优先级。这将允许您将处理扩展到单个 JVM 之外。
这只是两个示例,还有许多其他方法可以实现。
虽然这两种方法都可以让您完成您想要做的事情,但在实施和整体功能方面它们有很大不同。最终,您的要求将决定哪种类型的解决方案适合您的需求。