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); }
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("maxSizeBytes", addressSettings.getMaxSizeBytes()) .add("pageSizeBytes", addressSettings.getPageSizeBytes()) .add("redeliveryDelay", addressSettings.getRedeliveryDelay()) .add("redeliveryMultiplier", addressSettings.getRedeliveryMultiplier()) .add("maxRedeliveryDelay", addressSettings.getMaxRedeliveryDelay())
result.get(PAGE_MAX_CACHE_SIZE.getName()).set(settings.getPageCacheMaxSize()); result.get(PAGE_SIZE_BYTES.getName()).set(settings.getPageSizeBytes()); result.get(REDELIVERY_DELAY.getName()).set(settings.getRedeliveryDelay()); result.get(REDELIVERY_MULTIPLIER.getName()).set(settings.getRedeliveryMultiplier()); result.get(REDISTRIBUTION_DELAY.getName()).set(settings.getRedistributionDelay());
result.get(PAGE_MAX_CACHE_SIZE.getName()).set(settings.getPageCacheMaxSize()); result.get(PAGE_SIZE_BYTES.getName()).set(settings.getPageSizeBytes()); result.get(REDELIVERY_DELAY.getName()).set(settings.getRedeliveryDelay()); result.get(REDELIVERY_MULTIPLIER.getName()).set(settings.getRedeliveryMultiplier()); result.get(REDISTRIBUTION_DELAY.getName()).set(settings.getRedistributionDelay());
long redeliveryDelay = addressSettings.getRedeliveryDelay(); int deliveryCount = reference.getDeliveryCount();
assertEquals(1, conf.getAddressesSettings().get("a1").getRedeliveryDelay()); assertEquals(856686592L, conf.getAddressesSettings().get("a1").getMaxSizeBytes()); assertEquals(81738173872337L, conf.getAddressesSettings().get("a1").getPageSizeBytes()); assertEquals(5, conf.getAddressesSettings().get("a2").getRedeliveryDelay()); assertEquals(932489234928324L, conf.getAddressesSettings().get("a2").getMaxSizeBytes()); assertEquals(7126716262626L, conf.getAddressesSettings().get("a2").getPageSizeBytes());
@Test public void testSingleMerge() { AddressSettings addressSettings = new AddressSettings(); AddressSettings addressSettingsToMerge = new AddressSettings(); SimpleString DLQ = new SimpleString("testDLQ"); SimpleString exp = new SimpleString("testExpiryQueue"); addressSettingsToMerge.setDeadLetterAddress(DLQ); addressSettingsToMerge.setExpiryAddress(exp); addressSettingsToMerge.setMaxDeliveryAttempts(1000); addressSettingsToMerge.setAddressFullMessagePolicy(AddressFullMessagePolicy.DROP); addressSettingsToMerge.setMaxSizeBytes(1001); addressSettingsToMerge.setMessageCounterHistoryDayLimit(1002); addressSettingsToMerge.setRedeliveryDelay(1003); addressSettingsToMerge.setPageSizeBytes(1004); addressSettingsToMerge.setMaxSizeBytesRejectThreshold(10 * 1024); addressSettings.merge(addressSettingsToMerge); Assert.assertEquals(addressSettings.getDeadLetterAddress(), DLQ); Assert.assertEquals(addressSettings.getExpiryAddress(), exp); Assert.assertEquals(addressSettings.getMaxDeliveryAttempts(), 1000); Assert.assertEquals(addressSettings.getMaxSizeBytes(), 1001); Assert.assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), 1002); Assert.assertEquals(addressSettings.getRedeliveryDelay(), 1003); Assert.assertEquals(addressSettings.getPageSizeBytes(), 1004); Assert.assertEquals(AddressFullMessagePolicy.DROP, addressSettings.getAddressFullMessagePolicy()); Assert.assertEquals(addressSettings.getMaxSizeBytesRejectThreshold(), 10 * 1024); }
Assert.assertEquals(addressSettings.getMaxSizeBytes(), 1001); Assert.assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), 1002); Assert.assertEquals(addressSettings.getRedeliveryDelay(), 2003); Assert.assertEquals(addressSettings.getRedeliveryMultiplier(), 2.5, 0.000001); Assert.assertEquals(AddressFullMessagePolicy.DROP, addressSettings.getAddressFullMessagePolicy());
@Test public void testDefaults() { AddressSettings addressSettings = new AddressSettings(); Assert.assertEquals(null, addressSettings.getDeadLetterAddress()); Assert.assertEquals(null, addressSettings.getExpiryAddress()); Assert.assertEquals(AddressSettings.DEFAULT_MAX_DELIVERY_ATTEMPTS, addressSettings.getMaxDeliveryAttempts()); Assert.assertEquals(addressSettings.getMaxSizeBytes(), AddressSettings.DEFAULT_MAX_SIZE_BYTES); Assert.assertEquals(AddressSettings.DEFAULT_PAGE_SIZE, addressSettings.getPageSizeBytes()); Assert.assertEquals(AddressSettings.DEFAULT_MESSAGE_COUNTER_HISTORY_DAY_LIMIT, addressSettings.getMessageCounterHistoryDayLimit()); Assert.assertEquals(AddressSettings.DEFAULT_REDELIVER_DELAY, addressSettings.getRedeliveryDelay()); Assert.assertEquals(AddressSettings.DEFAULT_REDELIVER_MULTIPLIER, addressSettings.getRedeliveryMultiplier(), 0.000001); Assert.assertEquals(AddressSettings.DEFAULT_SLOW_CONSUMER_THRESHOLD, addressSettings.getSlowConsumerThreshold()); Assert.assertEquals(AddressSettings.DEFAULT_SLOW_CONSUMER_CHECK_PERIOD, addressSettings.getSlowConsumerCheckPeriod()); Assert.assertEquals(AddressSettings.DEFAULT_SLOW_CONSUMER_POLICY, addressSettings.getSlowConsumerPolicy()); Assert.assertEquals(AddressSettings.DEFAULT_AUTO_CREATE_JMS_QUEUES, addressSettings.isAutoCreateJmsQueues()); Assert.assertEquals(AddressSettings.DEFAULT_AUTO_DELETE_JMS_QUEUES, addressSettings.isAutoDeleteJmsQueues()); Assert.assertEquals(AddressSettings.DEFAULT_AUTO_CREATE_TOPICS, addressSettings.isAutoCreateJmsTopics()); Assert.assertEquals(AddressSettings.DEFAULT_AUTO_DELETE_TOPICS, addressSettings.isAutoDeleteJmsTopics()); Assert.assertEquals(AddressSettings.DEFAULT_AUTO_CREATE_QUEUES, addressSettings.isAutoCreateQueues()); Assert.assertEquals(AddressSettings.DEFAULT_AUTO_DELETE_QUEUES, addressSettings.isAutoDeleteQueues()); Assert.assertEquals(AddressSettings.DEFAULT_AUTO_CREATE_ADDRESSES, addressSettings.isAutoCreateAddresses()); Assert.assertEquals(AddressSettings.DEFAULT_AUTO_DELETE_ADDRESSES, addressSettings.isAutoDeleteAddresses()); Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultPurgeOnNoConsumers(), addressSettings.isDefaultPurgeOnNoConsumers()); Assert.assertEquals(ActiveMQDefaultConfiguration.getDefaultMaxQueueConsumers(), addressSettings.getDefaultMaxConsumers()); }
Assert.assertEquals(addressSettings.getMaxSizeBytes(), 1001); Assert.assertEquals(addressSettings.getMessageCounterHistoryDayLimit(), 2002); Assert.assertEquals(addressSettings.getRedeliveryDelay(), 1003); Assert.assertEquals(addressSettings.getRedeliveryMultiplier(), 1.0, 0.000001); Assert.assertEquals(addressSettings.getMaxRedeliveryDelay(), 5000);