A non-transactional MDB has very slow performance when a RuntimeException is thrown after an out-of-order message.

(Doc ID 1286306.1)

Last updated on DECEMBER 11, 2017

Applies to:

Oracle Weblogic Server - Version: 9.2 and later   [Release: and later ]
Information in this document applies to any platform.


You have a message-driven bean with max-beans-in-free-pool set to "4" and a custom WLS 8.1-style execute queue with a maximum of 4 threads. The MDB is non-transactional. The 4 MDB instances consume one message at a time because Messages Maximum is equal to "1".

Sometimes the MDB executes a long-running (20 to 30 minute) batch process . When this happens, all the MDB instances seem to wait for the long-running MDB instance to finish. In other words, if MDB 1 processed the 30-minute batch process, you observed that MDB 2 finished, followed by MDB 3 and MDB 4. MDB 2, 3, and 4 were then idle until MDB 1 finished. After MDB 1 finished, you saw four more messages delivered and pending. Why didn't the MDB instances process new messages until MDB 1 finished processing?


Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms