Hi Domenico, thanks, I'll check with team over there. Best, -Robert Zitat von Domenico Francesco Bruscino <[email protected]>:
Hi Robert, the code related to the redelivery-delay is the same in Apache ActiveMQ Artemis 2.10.1 and 2.37.0 versions. This issue could be caused by WFLY-19072[1], it sets the MaxRedeliveryDelay default value on the root of AddressSettings to 0, see https://github.com/wildfly/wildfly/commit/adf1c4eb41e1ebd69119fea9305ebfeba13ecf1a#diff-c841daa7f5b238a2987f4993f03c20610b65ac7dfb4b4382eea83663af40a079R79 [1] https://issues.redhat.com/browse/WFLY-19072 Regards, Domenico On Fri, 6 Dec 2024 at 08:51, Robert Palm <[email protected]> wrote: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: [email protected] For additional commands, e-mail: [email protected] For further information, visit: https://activemq.apache.org/contact
--------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information, visit: https://activemq.apache.org/contact
