1 Reply Latest reply on Sep 27, 2011 9:49 AM by Nigel Deakin-Oracle

    purging destinations vs setting message expirations


      Is there a way to automate the process of purging a destination on the broker? For example, I might want to purge the destination before sending it another message so that there is only one message at a time in the destination. Or perhaps the better way to do this is to set the JMSExpiration for each message? Just making sure, but the value the function setJMSExpiration takes is in milliseconds correct?

        • 1. Re: purging destinations vs setting message expirations
          Nigel Deakin-Oracle
          The JMS specification doesn't offer a way to explicitly purge a destination (delete all its messages), though your chosen JMS provider might off a non-standard way of doing this.

          You could of course simply consume all the messages in a loop.

          If you want to use message expiration, don't try using setJMSExpiration on the Message. That method is not for the purpose you might think (see the javadocs). Instead use one of the following methods on MessageProducer:

          void      setTimeToLive(long timeToLive)
          Sets the default length of time in milliseconds from its dispatch time that a produced message should be retained by the message system.

          void      send(Destination destination, Message message, int deliveryMode, int priority, long timeToLive)
          Sends a message to a destination for an unidentified message producer, specifying delivery mode, priority and time to live.

          timeToLive is in milliseconds.