[
https://issues.apache.org/jira/browse/AMQ-1853?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13197838#comment-13197838
]
Michael Piotrowski commented on AMQ-1853:
-----------------------------------------
I see a problem. I downloaded AMQ 5.6-SNAPSHOT, configured it and my
ConnectionFactory (wrapped) bean looks like this:
<bean id="jmsConnectionFactory"
class="org.apache.activemq.pool.PooledConnectionFactory"
destroy-method="stop">
<property name="connectionFactory">
<bean
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>${jms.broker.urls}</value>
</property>
<property name="redeliveryPolicy">
<bean
class="org.apache.activemq.RedeliveryPolicy">
<property
name="maximumRedeliveries" value="4"/>
<property
name="initialRedeliveryDelay" value="3000"/>
<property
name="useExponentialBackOff" value="true"/>
<property name="backOffMultiplier"
value="2"/>
</bean>
</property>
<property name="nonBlockingRedelivery"
value="true" />
</bean>
</property>
</bean>
The problem is that if 'nonBlockingRedelivery' is set to TRUE AFTER
RedeliveryPolicy property, redelivering takes much more time than specified in
RedeliveryPolicy object properties. On the other hand - while
'nonBlockingRedelivery' is put BEFORE declaration od RedeliveryPolicy - it
takes under consideration only 'maximumRedeliveries' property - but with no
delay and multiplier. That makes whole redelivery thing totally wrong - i got
defult 6 requests one by one.
Is this normal and expected behaviour? How can I achieve taking
redeliveryPolicy properties to run?
> Optional non-blocking redelivery
> --------------------------------
>
> Key: AMQ-1853
> URL: https://issues.apache.org/jira/browse/AMQ-1853
> Project: ActiveMQ
> Issue Type: Wish
> Components: Broker
> Affects Versions: 5.1.0
> Reporter: Demian Mrakovich
> Assignee: Timothy Bish
> Fix For: 5.6.0
>
> Attachments: AMQ1853Test.java
>
>
> When a message is redelivered the consumer blocks for the amount of time
> specified by the redelivery delay. For a high load scenario where message
> order is irrelevant this is just reducing performance and will result in a
> complete halt if the delay is long and several bad messages are consumed in a
> short time.
> I think what I basically wish for is how it worked in versions 3.x, prior to
> fix for AMQ-268. So I would very much like to have configurable option to NOT
> block consumers when redelivering messages.
> If no-one feels up to it, I'd still appreciate some hints and I could try to
> fix it myself. Looking at ActiveMQMessageConsumer.rollback(), I was thinking
> something in the lines of just scheduling a task to put the message back on
> queue after a delay - if configured to, instead of stopping delivery and a
> schedule a task to resume delivery again. But I do not possess an
> understanding of AMQ thorough enough to predict potential side effects of
> this, so any analysis would be helpful.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira