我在我的应用程序中使用EJB MDB 3.0和WAS 7服务器。我有7个MDB,因此在WAS服务器上创建了7个队列和7个激活规范。我已将所有7个激活规范maxPoolDepth设置为6,将资源适配器客户属性concurrentSession设置为1,将maxConnections设置为10. DataSource maxConnections设置为60. MDB基本上使用消息详细信息更新Solid DB。问题是当队列中发布了数千条消息时,应用程序创建了太多数据库连接(超过60个)导致数据库性能问题。所以我认为我需要限制每秒处理的消息数量。
如果我设置激活规范maxPoolDepth,那么我是否需要在WAS控制台上创建WorkManager和/或Scheduler,但我没有得到我将在应用程序中配置WorkManager和TimerManager的位置。因为我只有ejb-jar-bnd.xml(用于配置消息驱动的bean)和Spring bean配置XML文件。在这种情况下我还需要TimerManager吗?或者,有没有其他方法可以通过更新MDB本身中的某些注释来控制消息限制?
另外,在激活规范上设置maxPoolDepth属性和在MDB本身中提供@ActivationConfigProperty(propertyName =“maxSession”,propertyValue =“6”)注释之间有什么区别?
答案 0 :(得分:0)
关于行动规范配置:
管理控制台>资源> JMS>激活规格有一个设置
"每个端点的最大并发MDB调用次数"
我通常会保留我的10.你可能想玩这个号码。