控制 JMS 服务器:创建了太多 MDBean (weblogic)
我有一个执行延迟操作的应用程序。 用户生成 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以通过使用 weblogic-ejb-jar.xml 中 bean 描述符中的 max-beans-in-free-pool 元素来限制 MDB 实例的数量。
如果未指定,创建的实例数量将仅受可用线程数量的限制。 无论如何,最好将最大线程数设置为等于或小于数据库连接池的大小。
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.
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.