1 2 Previous Next 20 Replies Latest reply on May 10, 2007 11:25 AM by parressh Go to original post
      • 15. Re: RediveryDelay implemented yet?
        timfox

        Which invoker are you using? The old container invoker or the JCA stuff?

        • 16. Re: RediveryDelay implemented yet?
          timfox

          MDB container and JCA is not really my area, but AFAIK I am pretty certain that MDB container/adapter stuff comes *between* the jms provider and the MDB itself, so I am puzzled as to how JBossMQ could catch the exception and do a delayed redelivery.

          Weston might be able to shed some more light here.

          • 17. Re: RediveryDelay implemented yet?
            cresny

             

            "timfox" wrote:
            Which invoker are you using? The old container invoker or the JCA stuff?


            just out-of-the-box jboss 4.0.x plus the queue config above.

            • 18. Re: RediveryDelay implemented yet?
              timfox

              AFAIK - out of the box 4.0.x is the JMSContainerInvoker.

              With this, AFAIK the actual thing that implements the onMessage is the StdServerSession which handles the retry logic and delegates to the actual MDB, again this is not my area so I am not 100% sure (someone else could confirm), so the messaging provider shouldn't have a chance to intercept the exception.

              Anyway, I suspect there is some other explanation for this.

              • 19. Re: RediveryDelay implemented yet?
                weston.price

                Which means the JMSContainerInvoker (ie older ASF stuff). I am trying to track down where this is actually implemented in JBossMQ. I know that the neither the JMSContainerInvoker nor the JMS/JCA adapter handle redelivery delay.

                • 20. Re: RediveryDelay implemented yet?
                  parressh

                  timfox, my MDB is simply calling a web service, which can be slow/unreliable and that is why we are using JMS; so that our front-end processing can be fast. Since the web service may be down, it doesn't make sense to retry the operation without a delay.

                  My current hack for delaying redelivery is to throw a RuntimeException from the MDB which sends the message to the DLQ since I have DefaultMaxDeliveryAttempts=1. (Interesting how this config parameter works with MDB's, but DefaultRedeliveryDelay does not.) Anyway, I have another MDB listening to the DLQ which sleeps for a time and sends back to the original queue where the first MDB picks it up again. I suspect that sleeping the thread is probably a bad idea, which is why I'd like to know how to make use of the redelivery delay feature of JBM. I'm open to not using MDB's (like Spring, maybe), so I was wondering what suggestion you have for receiving the messages to make use of the delay, since it does not work with MDB's.

                  1 2 Previous Next