9 Replies Latest reply on Jul 31, 2007 3:02 PM by 666705

    how to set Weblogic Thread Pool for MDB/JMS

    666705
      hi all

      i am using weblogic 81 sp2 , websphere 5.2 as a foreign server. for Concurrent message processing ,
      my MDB not able to pick up message at right time.
      if client put 25 msg at time in my request queue, my MDB pick-up first 8 msg only at a time,after that MDB waiting for these msg processing.
      after these msg processing then MDB pick up other 8 msg.... so i cant perform well.

      how to make it my MDB pick up all message at a right time.

      and one more thing
      if i declare user defined execute thread and assign my MDB with execute thread (using <dispatch-policy>),i got jms exception.(JMS exception:MQJMS2005: failed to create MQQueueManager for 'localhost:UTSD11')
      (i got BEA-014005 warning)

      is it possible to assign user-define execute thread?


      plz clear my problem
      thanx n advance

      regards
      muruganandam
        • 1. Re: how to set Weblogic Thread Pool for MDB/JMS
          666705
          Try increasing the default thread pool size (or the user-defined thread pool size, if you're using one) to 25, assuming you have enough CPU power in the WLS server machine.

          I suspect you're getting the exception while trying to use user-defined queues because you don't have the execute queue set up in the server - you need to set up an execute queue with the same name as the dispatch policy for your MDB.
          • 2. Re: how to set Weblogic Thread Pool for MDB/JMS
            666705
            if i trying to increase the default thread pool size (default thread count is 15) to 25, i got JMS Exception.
            i am running on Solaris 8 OS with 1GB RAM and My MDB have Max Beans in Free Pool is 1000 and initial bean size is 500.still i am not able to pick up all messages at a time.
            • 3. Re: how to set Weblogic Thread Pool for MDB/JMS
              666705
              Could you post the JMSException you're getting?
              • 4. Re: how to set Weblogic Thread Pool for MDB/JMS
                666705
                if i increase the default thread count(weblogic.kernel.Default) 15 to 25, then i got this kind of exception ---->

                <Nov 13, 2004 4:25:18 PM MYT> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: GCIFUpdTimeoutQMDB is unable to connect to the JMS destination: jms/IUTS_GCIF_UPD_TIMEOUT_Q. The Error was:
                [EJB:011014]The Message-Driven EJB failed while creating a JMS Connection. The error was:
                [EJB:010196]'javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'localhost:UTSD11'' Linked exception = 'com.ibm.mq.MQException: MQJE001: An MQException occurred: Completion Code 2, Reason 2009
                MQJE016: MQ queue manager closed channel immediately during connect
                Closure reason = 2009'.
                • 5. Re: how to set Weblogic Thread Pool for MDB/JMS
                  666705
                  It appears that the foreign JMS provider is restricting the number of connections that can be made to it. I'd check the license restrictions/configuration of the foreign JMS provider and ensure it allows the required number of concurrent connections. The closure reason code 2009 should indicate what the problem is.
                  • 6. Re: how to set Weblogic Thread Pool for MDB/JMS
                    666705
                    The number of concurrently active MDBs is controlled by two things in the descriptor settings:

                    dispatch-policy (name of thread pool to use)
                    max-beans-in-thread-pool (max number of beans)

                    When running in the default thread pool, the max number of concurrent MDBs is:
                    min(default-thread-pool-size/2 + 1, max-beans)

                    When running in a custom thread pool the max number is:
                    min(thread-pool, max-beans)

                    It so happens that the default size of the default execute thread pool is 15 - which explains why you are getting a maximum concurrency of 8.

                    For this information, and more, I highly recommend reading the MDB chapter of the EJB programmer's guide.

                    Tom

                    P.S. I think that it in most JVMs to get the best performance it is best to limit the number of concurrent threads. You may find that increasing the thread pool size to 500 (as it seems to be your intention to have 500 active concurrent jobs), will slow things down...
                    • 7. Re: how to set Weblogic Thread Pool for MDB/JMS
                      666705
                      Hi,

                      I'm getting this error :

                      [EJB:011014]The Message-Driven EJB failed while creating a JMS Connection. The error was: javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for '147.149.178.44:BT.QM.IVASCTG' Linked exception: com.ibm.mq.MQException: MQJE001: An MQException occurred: Completion Code 2, Reason 2059 MQJE011: Socket connection attempt refused Nested exception: com.ibm.mqservices.MQInternalException: MQJE001: An MQException occurred: Completion Code 2, Reason 2059 MQJE011: Socket connection attempt refused. javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for '147.149.178.44:BT.QM.IVASCTG' at com.ibm.mq.jms.services.ConfigEnvironment.newException(ConfigEnvironment.java:569) at com.ibm.mq.jms.MQConnection.createQM(MQConnection.java:2328) at com.ibm.mq.jms.MQConnection.createQMNonXA(MQConnection.java:1749) at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:144) at com.ibm.mq.jms.MQQueueConnection.<init>(MQQueueConnection.java:54) at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:106) at weblogic.ejb.container.internal.JMSConnectionPoller.getConnection(JMSConnectionPoller.java:431) at weblogic.ejb.container.internal.JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:1645) at weblogic.ejb.container.internal.JMSConnectionPoller.connect(JMSConnectionPoller.java:750) at weblogic.ejb.container.internal.MDConnectionManager.timerExpired(MDConnectionManager.java:169) at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:259) at weblogic.work.ServerWorkManagerImpl$WorkAdapterImpl.run(ServerWorkManagerImpl.java:518) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207) at weblogic.work.ExecuteThread.run(ExecuteThread.java:179) NestedException Message is :MQJMS2005: failed to create MQQueueManager for '147.149.178.44:BT.QM.IVASCTG'


                      I doubt there is some problem with the binding of MQ to JMS??
                      can anyone pls help me on this.
                      thanks
                      Parul
                      • 8. Re: how to set Weblogic Thread Pool for MDB/JMS
                        666705
                        It appears that the MQ JMS server is refusing connections from the MQ JMS client. I suggest looking up "MQJMS2005" in the IBM documentation and also checking if the IBM specific connection string '147.149.178.44:BT.QM.IVASCTG' is correct.
                        • 9. Re: how to set Weblogic Thread Pool for MDB/JMS
                          666705
                          Hi

                          It might be that you reached the maximum number of channels in the MQ. By default it is 100. Check the MQ logs, and increase the maximum number of channels in the queue manager configuration file.