1

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

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

4

1 回答 1

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>

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

于 2009-04-22T02:57:19.383 回答