Hi Domenico,
thanks, I'll check with team over there.
Best,
-Robert
Zitat von Domenico Francesco Bruscino <bruscin...@gmail.com>:
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 <develo...@robert-palm.de> 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: users-unsubscr...@activemq.apache.org
For additional commands, e-mail: users-h...@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact
---------------------------------------------------------------------
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