如何限制工作负载密集型@MessageDriven上下文中的线程数?

时间:2014-06-21 04:03:56

标签: java-ee tomee

我有一个使用@MessageDriven注释的MessageListener。它所做的工作是非常耗费资源的,所以我想限制可能同时执行它的线程数。

我可以提供一个注释,以便线程数量有限吗?我想到了@Singleton,但这只是意味着创建了一个实例,但是多个线程可能同时对它执行。

在启动时启动工作线程是一种更好的方法,它只是在队列可以自由工作时轮询它吗?

1 个答案:

答案 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