1 Reply Latest reply on Sep 21, 2005 6:09 PM by Jin Chen

    big message not removed from the queue

    Jin Chen Newbie

      We found a problem on JMS. I am not sure if it is my configuration problem. I wrote a simple MDB. At client side, when I put a small size ObjectMessage into the queue, MDB works fine. Only one MDB pickups and processes the message for one time. However, when I put a big size ObjectMessage (~MB) into the queue and MDB needs to process a little longer for a message, I found there are serveral MDB which sequentially pick up the same message from the queue and process it. I wonder if I should set something for message persistence to solve this problem.

      btw, jboss is running on a linux environment. I can see many same session pool message for MeesageDriverBean. Does that multithread or multi-CPU cause the problem? But I doubt because it is running fine for the small size message.

      Thanks for your help in advance!

      ----------------------------------------------------
      This is the my-jbossmq-destinations-service.xml in jboss-4.0.2/server/default/deploy/jms directory

      <?xml version="1.0" encoding="UTF-8"?>




      <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager




      ----------------------------------------------------------
      MDB is very simple. ZippingMessage contains a list of filename need to be zipped. When ZippingMessage is bigger, this MDB needs to process longer time on zipping.

      public void onMessage(Message arg0) {

      // TODO Auto-generated method stub
      try {

      ObjectMessage om = (ObjectMessage) arg0;
      ZippingMessage izm = (ZippingMessage) om.getObject();

      // start zipping and wait it finished
      ZipManager zipper = new ZipManager();
      zipper.setName(izm.getZipFilename());
      zipper.setFiles(izm.getItems());
      zipper.start();
      zipper.join();

      } catch (Exception e) {
      log.error("Unexpected exception: " + e.getMessage());
      }

        • 1. Re: big message not removed from the queue
          Jin Chen Newbie

           

          "jchen0516" wrote:
          We found a problem on JMS. I am not sure if it is my configuration problem. I wrote a simple MDB. At client side, when I put a small size ObjectMessage into the queue, MDB works fine. Only one MDB pickups and processes the message for one time. However, when I put a big size ObjectMessage (~MB) into the queue and MDB needs to process a little longer for a message, I found there are serveral MDB which sequentially pick up the same message from the queue and process it. I wonder if I should set something for message persistence to solve this problem.

          btw, jboss is running on a linux environment. I can see many same session pool message for MeesageDriverBean. Does that multithread or multi-CPU cause the problem? But I doubt because it is running fine for the small size message.

          Thanks for your help in advance!

          ----------------------------------------------------
          This is the my-jbossmq-destinations-service.xml in jboss-4.0.2/server/default/deploy/jms directory



          mbean code="org.jboss.mq.server.jmx.Queue"
          name="jboss.mq.destination:service=Queue,name=myQueue"
          <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
          /mbean>


          ----------------------------------------------------------
          MDB is very simple. ZippingMessage contains a list of filename need to be zipped. When ZippingMessage is bigger, this MDB needs to process longer time on zipping.

          public void onMessage(Message arg0) {

          // TODO Auto-generated method stub
          try {

          ObjectMessage om = (ObjectMessage) arg0;
          ZippingMessage izm = (ZippingMessage) om.getObject();

          // start zipping and wait it finished
          ZipManager zipper = new ZipManager();
          zipper.setName(izm.getZipFilename());
          zipper.setFiles(izm.getItems());
          zipper.start();
          zipper.join();

          } catch (Exception e) {
          log.error("Unexpected exception: " + e.getMessage());
          }