1 Reply Latest reply on Nov 29, 2004 2:23 PM by Adrian Brock

    MDB concurrency

    Heiko Braun Newbie

      Hi all,

      i am looking at an MDB problem for a couple of days now,
      and could really need some thoughts on the following problem:


      we have a common mdb setup (AUTO_ACK, persistet, transacted receiver MDB) and a client submitting messages to the queue.
      since the client is much faster then the MDB process (around 1sec)
      the queue fills up. with the default mdb config (no-singleton) there should a concurrent number of mdb instances that work on that queue.

      for some reason, the container uses just a single instance sequentially,
      which results in very poor performance.

      even when i set the container min-size to 50, i see 50 mdb's are being created, but only one is used to process the queue contents.

      this happens on 3.2.6 with jdk 1.4.2.


      any hints or thoughts are greatly appreciated.
      i alerady fostered the web, the faq and all the forums + mailinglists.

      thanks in advance,
      heiko

        • 1. Re: MDB concurrency
          Adrian Brock Master

          Where is it spending the time?

          If most of the time is spent during the commit, either updating the jms persistent
          store or the synching with the database for ejb db operations, it is quite likely
          that one MDB instance can cope with the load.
          The EJB instance is only used for the duration of the onMessage() method.
          It can be reused for another request after that message returns.

          In any case, changing the number of MDB instances will have little affect if
          you don't also update the max number of jms sessions for the MDB (15 is the default).