控制JMS服务器:创建了太多MDBean(weblogic)

时间:2009-04-22 02:44:28

标签: jdbc jms weblogic jboss-mdb

我有一个执行延迟操作的应用程序。用户生成存储在JMS队列中的100万条消息,然后MDBeans正在使用这些消息并执行某些操作并将数据存储在数据库中。由于JMS Queue工作得太快,它会尝试创建100万个MDBean实例,这些实例又会尝试创建100万个数据库连接。毫不奇怪,由于JDBC连接池无法提供100万个连接请求,因此其中一些超时。

控制创建的MDBeans数量的最佳解决方案是什么?最好是一定数量的MDBeans处理100万条消息,这些消息不超过JDBC池中允许的连接数

1 个答案:

答案 0 :(得分:1)

您可以在weblogic-ejb-jar.xml中使用bean的描述符中的max-beans-in-free-pool元素来限制MDB的实例数。

<message-driven-descriptor>
   <pool>
      <max-beans-in-free-pool>100</max-beans-in-free-pool>
      <initial-beans-in-free-pool>50</initial-beans-in-free-pool>
   </pool>
   ...
</message-driven-descriptor>

如果未指定,则创建的实例数将仅受可用线程数限制。无论如何,最好将最大线程数设置为等于或小于数据库连接池的大小。