You have to setup max-redelivery-delay to take it effect, as the max-redelivery-delay's default is redelivery-delay
<address-settings>
<!--default for catch all-->
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<!-- 240000 = 4 min-->
<redelivery-delay>24000</redelivery-delay>
<!-- 2400000 = 40 min .. or whatever you like -->
**<max-redelivery-delay>2400000</max-redelivery-delay>**
<redelivery-delay-multiplier>20.0</redelivery-delay-multiplier>
<max-delivery-attempts>5</max-delivery-attempts>
<max-size-bytes>104857600</max-size-bytes>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
<address-full-policy>BLOCK</address-full-policy>
</address-setting>
</address-settings>
I'm changing this behavior on future versions (2.4.0+) through this issue tracker: