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

发布于 2024-07-17 01:30:02 字数 292 浏览 10 评论 0原文

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

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

I have an application that does a delayed operation. User generates 1 million messages that are stored in the JMS Queue and then a MDBeans are consuming these messages and performing some action and storing data in the database. Since JMS Queue is working too fast, it tries to create 1 million MDBean instances which in turn try to create 1 million database connections. No surprise that some of them timeout since JDBC connection pool cannot serve 1 million connection requests.

What is the best solution to control the number of MDBeans created? It would be better that 1 million messages would be processed by a certain number of MDBeans that is not exceeding the number of allowed connections in JDBC pool

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

百善笑为先 2024-07-24 01:30:02

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

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

You can limit the number of instances of your MDB by using the max-beans-in-free-pool element within the descriptor for your bean in weblogic-ejb-jar.xml.

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

If left unspecified, the number of instances created will only be bounded by the number of threads available. Regardless, it is good practice to set the maximum number of threads equal to or lower than the size of your database connection pool.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文