|
下列部分提供有关消息驱动 Bean(Message-Driven Bean,简称 MDB)的调整及最佳实践信息:
MDB 事务批处理允许在一个容器管理的事务中处理多条 JMS 消息。批处理通过多条消息分摊事务成本,若正确使用批处理,将能降低甚至消除 2PC 与 1PC 处理之间的吞吐量差异。请参阅“WebLogic Enterprise JavaBean 编程”中的 MDB 的事务批处理。
| 注意: | 使用批处理时,可能需要减少并发 MDB 实例的数目。如果有太多的 MDB 实例可用,那么消息将以并行方式,而非批处理方式进行处理。请参阅 MDB 线程管理。 |
| 注意: | 批处理一般会增加吞吐量,但也可能增加滞后(单条消息完成其 MDB 处理所用的时间)。 |
MDB 的线程管理根据并发数(可以同时活动的 MDB 实例数)进行描述。下列部分提供有关 MDB 并发的信息:
表 10-1 提供有关如何确定服务器实例上并发运行的 MDB 实例数的信息。
已启用批处理的事务 MDB 为每个部署的 MDB 创建专用轮询线程。此轮询线程不是从 dispatch-policy 指定的缓冲池分配的,它是其他所有运行在系统的线程之外的一种全新线程。请参阅使用事务批处理。
| 注意: | 每一种应用程序都是唯一的,请根据应用程序在环境中的执行情况选择并发策略。 |
min-threads-constraint 指定工作管理器,要么使用自定义执行队列来保留线程。 max-threads-constraint 参数和高公平共享设置的自定义工作管理器。 | 注意: | 必须配置 max-threads-constraint 参数以替换默认的并发值 16。 |
下列部分提供了在使用外部供应商 MDB 时,有关 WebLogic Server 行为的信息:
当使用外部 MDB 时,WebLogic Server 可确定并发,如表 10-2 所示。
下列部分提供了当 WebLogic Server 与外部供应商 MDB 互操作时,如何分配线程的信息:
| 注意: | 当使用外部事务 MDB 时,某些外部供应商要求每个并发 MDB 实例都有一个永久分配的线程。这些线程从 dispatch-policy 指定的缓冲池中提取,并且在取消部署 MDB 后,才返回到缓冲池。因为这些线程不是共享的,MDB 可能缺乏相同缓冲池中的其他资源。在这种情况下,可能需要增加缓冲池中的线程数。 |
|