我有一个使用@MessageDriven
注释的MessageListener。它所做的工作是非常耗费资源的,所以我想限制可能同时执行它的线程数。
我可以提供一个注释,以便线程数量有限吗?我想到了@Singleton
,但这只是意味着创建了一个实例,但是多个线程可能同时对它执行。
在启动时启动工作线程是一种更好的方法,它只是在队列可以自由工作时轮询它吗?
答案 0 :(得分:0)
事实证明maxSessions
激活属性可以控制它。因此,您只需注释您的MDB,类似于以下内容:
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination",
propertyValue = "inbox"),
@ActivationProperty(propertyName = "maxSessions",
propertyValue = "1")
}
)
public class SharedResourceWorker implements MessageListener