private long calculateRedeliveryDelay(final AddressSettings addressSettings, final int deliveryCount) { long redeliveryDelay = addressSettings.getRedeliveryDelay(); long maxRedeliveryDelay = addressSettings.getMaxRedeliveryDelay(); double redeliveryMultiplier = addressSettings.getRedeliveryMultiplier(); int tmpDeliveryCount = deliveryCount > 0 ? deliveryCount - 1 : 0; long delay = (long) (redeliveryDelay * (Math.pow(redeliveryMultiplier, tmpDeliveryCount))); if (delay > maxRedeliveryDelay) { delay = maxRedeliveryDelay; } return delay; }
.add("redeliveryDelay", addressSettings.getRedeliveryDelay()) .add("redeliveryMultiplier", addressSettings.getRedeliveryMultiplier()) .add("maxRedeliveryDelay", addressSettings.getMaxRedeliveryDelay()) .add("redistributionDelay", addressSettings.getRedistributionDelay()) .add("lastValueQueue", addressSettings.isDefaultLastValueQueue())
result.get(LAST_VALUE_QUEUE.getName()).set(settings.isDefaultLastValueQueue()); result.get(MAX_DELIVERY_ATTEMPTS.getName()).set(settings.getMaxDeliveryAttempts()); result.get(MAX_REDELIVERY_DELAY.getName()).set(settings.getMaxRedeliveryDelay()); result.get(MAX_SIZE_BYTES.getName()).set(settings.getMaxSizeBytes()); result.get(MESSAGE_COUNTER_HISTORY_DAY_LIMIT.getName()).set(settings.getMessageCounterHistoryDayLimit());
result.get(LAST_VALUE_QUEUE.getName()).set(settings.isDefaultLastValueQueue()); result.get(MAX_DELIVERY_ATTEMPTS.getName()).set(settings.getMaxDeliveryAttempts()); result.get(MAX_REDELIVERY_DELAY.getName()).set(settings.getMaxRedeliveryDelay()); result.get(MAX_SIZE_BYTES.getName()).set(settings.getMaxSizeBytes()); result.get(MESSAGE_COUNTER_HISTORY_DAY_LIMIT.getName()).set(settings.getMessageCounterHistoryDayLimit());
Assert.assertEquals(addressSettings.getRedeliveryDelay(), 1003); Assert.assertEquals(addressSettings.getRedeliveryMultiplier(), 1.0, 0.000001); Assert.assertEquals(addressSettings.getMaxRedeliveryDelay(), 5000); Assert.assertEquals(AddressFullMessagePolicy.DROP, addressSettings.getAddressFullMessagePolicy());