5 Replies Latest reply on May 4, 2011 5:02 PM by Mike Finn

    Clear RDLVR queue/store?

    Mike Finn Apprentice

      Ran into an interesting situation. Something was bad with one of our services (I think EPRs were dead - not sure why, but that's a separate issue). Messages destined for the service went into rdlvr. This was a couple thousand messages in a test environment, so I just wanted to *stop* the redeliver process for these messages.

       

      Tried: Stopped server, emptied out messages from JBM tables (Oracle, in this case), removed data/ tmp/ work/ dirs and restarted. Messages were STILL THERE. I can't seem to find where they are kept. I thought it was in DLQ with a special status, but DLQ shows empty in the DB. Is it possible to purge the rdlvr messages?

       

      TIA,

      Mike

        • 1. Clear RDLVR queue/store?
          Hans Wolffenbuttel Expert

          Hi Mike,

           

          If its a test environment then you can simply drop the JBOSS user in oracle, that is, if you have configured your messaging to use Oracle. That always works for me. If you still have your messages after dropping (and recreating) your JBOSS user, you might want to look into how your messages are persisted. This can be found in "jbossesb-server-4.9\server\default\deploy\jboss-messaging.sar" and checking the xxx-persistence-service.xml.

           

          Regards,

           

          Hans

          1 of 1 people found this helpful
          • 2. Clear RDLVR queue/store?
            Mike Finn Apprentice

            I didn't go so far as to drop the user/schema, but queries against all the JBM tables in there showed nothing. oracle-persistence-service.xml is pointing to JmsDs, which is correct. I must be missing something here.

             

            Also, I looked around for mbean operation to empty it, but cannot find such a beast. Wondering how we will handle this in production should the need arise for manual purging of messages in rdlvr. Any ideas?

             

            Thanks,

            Mike

            • 3. Clear RDLVR queue/store?
              Hans Wolffenbuttel Expert

              You can always use the RedeliverStore or the MessageStore interface which after implementation you can use to purge your messages from the redelivery queue or deadletter queue. There might be some examples available how to do this in the quickstarts.

               

              Regards,

               

              Hans

               

              • 4. Re: Clear RDLVR queue/store?
                Ryan Hochstetler Newbie

                Hans is hitting on the correct solution there.  The RDLVR queue is not a queue at all.  It's in the message store.

                 

                ${jboss.server.home}/deploy/jbossesb.esb, check message-store-ds.xml and the sibling message-store-sql directory to determine where the message store is getting persisted, and which tables it's using in the DB.

                 

                I'm guessing, but I imagine the following will purge it from whichever database message-store-ds.xml points to (assuming a stock config):

                delete from message where type='RDLVR';
                • 5. Re: Clear RDLVR queue/store?
                  Mike Finn Apprentice

                  Wow - I totally missed the obvious - a table called MESSAGE! Was only (incorrectly) looking at the JBM stuff. Doh.

                   

                  Thanks guys,

                  Mike