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

Jdbc 控制JMS服务器:创建的MDBean太多(weblogic),jdbc,jms,weblogic,jboss-mdb,Jdbc,Jms,Weblogic,Jboss Mdb,我有一个执行延迟操作的应用程序。用户生成100万条存储在JMS队列中的消息,然后MDBeans将使用这些消息并执行一些操作,并将数据存储在数据库中。由于JMS队列工作得太快,它试图创建100万个MDBean实例,而MDBean实例又试图创建100万个数据库连接。毫不奇怪,它们中的一些会超时,因为JDBC连接池无法服务100万个连接请求 控制创建的MDBean数量的最佳解决方案是什么?最好由不超过JDBC池中允许的连接数的特定数量的MDBean处理100万条消息您可以通过在weblogic-ejb

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


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

您可以通过在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>

100
50
...

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

您可以通过在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>

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