【发布时间】:2014-01-10 07:12:33
【问题描述】:
我在我的应用程序中使用 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 个)导致数据库性能问题。所以我认为我需要限制每秒处理的消息数量。
如果我设置了 Activation Specs maxPoolDepth,那么我是否需要在 WAS 控制台上创建 WorkManager 和/或 Scheduler,但是我没有找到在应用程序中配置 WorkManager 和 TimerManager 的位置。因为我只有 ejb-jar-bnd.xml(用于配置消息驱动的 bean)和 Spring bean 配置 XML 文件。在这种情况下,我还需要 TimerManager 吗?或者有没有其他方法可以通过更新 MDB 本身中的一些注释来控制消息限制?
另外,在 Activation Spec 上设置 maxPoolDepth 属性和在 MDB 本身中给 @ActivationConfigProperty(propertyName = "maxSession", propertyValue = "6") 注解有什么区别?
【问题讨论】:
标签: java jms websphere-7 message-driven-bean