Updated from wildfy 19 (artemis version 2.10.1) to 34 (artemis version 2.37.0).

The setting in my standalone.xml was: <address-setting name="jms.queue.TestQueue" redelivery-delay="600000" ....

I needed to change it to: <address-setting name="jms.queue.TestQueue" redelivery-delay="600000" max-redelivery-delay="600000"....

Trace says "Setting redeliveryDelay=0", which I found here:

// Second check Redelivery Delay
long redeliveryDelay = addressSettings.getRedeliveryDelay();
if (!ignoreRedeliveryDelay && redeliveryDelay > 0) {
   redeliveryDelay = calculateRedeliveryDelay(addressSettings, deliveryCount);

   if (logger.isTraceEnabled()) {
logger.trace("Setting redeliveryDelay={} on reference={}", redeliveryDelay, reference);
   }

In the new version 2.37 the method

private long calculateRedeliveryDelay(final AddressSettings addressSettings, final int deliveryCount) {
   long redeliveryDelay = addressSettings.getRedeliveryDelay();
   long maxRedeliveryDelay = addressSettings.getMaxRedeliveryDelay();
   double redeliveryMultiplier = addressSettings.getRedeliveryMultiplier();
double collisionAvoidanceFactor = addressSettings.getRedeliveryCollisionAvoidanceFactor();

   int tmpDeliveryCount = deliveryCount > 0 ? deliveryCount - 1 : 0;
long delay = (long) (redeliveryDelay * (Math.pow(redeliveryMultiplier, tmpDeliveryCount)));
   if (collisionAvoidanceFactor > 0) {
      Random random = ThreadLocalRandom.current();
double variance = (random.nextBoolean() ? collisionAvoidanceFactor : -collisionAvoidanceFactor) * random.nextDouble();
      delay += (delay * variance);
   }

   if (delay > maxRedeliveryDelay) {
      delay = maxRedeliveryDelay;
   }

   return delay;
}

is still the same as in the old version of artemis, but now leads to setting delay to 0 because I don't have max-redelivery-delay set at all:

public long getMaxRedeliveryDelay() {
// default is redelivery-delay * 10 as specified on the docs and at this JIRA:
   // https://issues.jboss.org/browse/HORNETQ-1263
return maxRedeliveryDelay != null ? maxRedeliveryDelay : (getRedeliveryDelay() * 10);
}

In the new version 2.37 there were changes made in org.apache.activemq.artemis.core.settings.impl.AddressSettings

I think if the parameter max-redelivery-delay is not there it should fall back to redelivery-delay (in my case 600000) as an initialization parameter and not to 0.

If you think so, too, please fix.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@activemq.apache.org
For additional commands, e-mail: users-h...@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact


Reply via email to