[ 
https://issues.apache.org/jira/browse/AMQ-5650?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14352683#comment-14352683
 ] 

JaySenSharma commented on AMQ-5650:
-----------------------------------


Steps to reproduce the issue: 
##########################

- Deploy the "activemq-rar-5.9.0.rar" on JBoss EAP 6.3.0
- in the standalone.xml file of EAP 6.3.0 add the following resource-adapter 
detail to set the "InitialRedeliveryDelay" and  "MaximumRedeliveries" :
{code}
        <subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
            <resource-adapters>
                <resource-adapter id="activemq-ra.rar">
                    <archive>
                        activemq-ra.rar
                    </archive>
                    <transaction-support>XATransaction</transaction-support>
                    <config-property name="InitialRedeliveryDelay">
                        5000
                    </config-property>
                    <config-property name="MaximumRedeliveries">
                        4
                    </config-property>
                    <config-property name="Password">
                        admin
                    </config-property>
                    <config-property name="UserName">
                        admin
                    </config-property>
                    <config-property name="ServerUrl">
                        tcp://localhost:61616
                    </config-property>
                    <connection-definitions>
                        <connection-definition 
class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" 
jndi-name="java:jboss/exported/activemq/ActiveMQQueueConnectionFactory" 
enabled="true" use-java-context="false" pool-name="java:/jms/ActiveMQPool" 
use-ccm="false">
                            <xa-pool>
                                <min-pool-size>10</min-pool-size>
                                <max-pool-size>20</max-pool-size>
                            </xa-pool>
                            <recovery>
                                <recover-credential>
                                    <user-name>admin</user-name>
                                    <password>admin</password>
                                </recover-credential>
                            </recovery>
                        </connection-definition>
                    </connection-definitions>
                    <admin-objects>
                        <admin-object 
class-name="org.apache.activemq.command.ActiveMQQueue" 
jndi-name="java:jboss/exported/TestQ" use-java-context="false" 
pool-name="TestQ"/>
                    </admin-objects>
                </resource-adapter>
            </resource-adapters>
        </subsystem>
{code}

- Start the JBoss EAP6 
- Start JBoss A-MQ 6.1.0 locally (In the same box where the JBoss EAP6.3 is 
running)
- Now send some messages to the A-MQ,  destinationm TestQ
- Deploy the attached MDB 3 on EAP 6.3 to fetch messages from the JBoss A-MQ 
queue.
{code}
package ejb30;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.ejb.ActivationConfigProperty;
import javax.naming.*;
import javax.annotation.*;
import javax.ejb.MessageDrivenContext;
import javax.annotation.Resource;
import org.jboss.ejb3.annotation.ResourceAdapter;

@MessageDriven(activationConfig =
        {
           @ActivationConfigProperty(propertyName="destinationType", 
propertyValue="javax.jms.Queue"),
           @ActivationConfigProperty(propertyName="destination", 
propertyValue="TestQ")
        })
@ResourceAdapter("activemq-ra.rar")    // Which is activemq-rar-5.9.0.rar

public class TestMDB implements MessageListener{
    @Resource
    private MessageDrivenContext mdc;

    public void onMessage(Message message) {
        TextMessage textMessage = (TextMessage) message;
        try {
              System.out.println("\n=> "+new java.util.Date()+"\tTestMDB 
Received Message >  "+textMessage.getText());
              System.out.println("\tbefore mdc.setRollbackOnly()");
              mdc.setRollbackOnly();
              System.out.println("\tafter mdc.setRollbackOnly()");
              
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}
{code}

- The output will be noticed in the log of EAP 6.3.0 as following:

{code}
20:04:57,768 INFO  [org.apache.activemq.ra.ActiveMQEndpointWorker] 
(default-threads - 1) Successfully established connection to broker 
[tcp://localhost:61616]
20:05:00,726 INFO  [stdout] (default-threads - 2) 
20:05:00,727 INFO  [stdout] (default-threads - 2) => Thu Mar 05 20:05:00 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:05:00 IST 2015
20:05:00,727 INFO  [stdout] (default-threads - 2)       before 
mdc.setRollbackOnly()
20:05:00,727 INFO  [stdout] (default-threads - 2)       after 
mdc.setRollbackOnly()
20:05:01,736 INFO  [stdout] (default-threads - 3) 
20:05:01,736 INFO  [stdout] (default-threads - 3) => Thu Mar 05 20:05:01 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:05:00 IST 2015
20:05:01,737 INFO  [stdout] (default-threads - 3)       before 
mdc.setRollbackOnly()
20:05:01,737 INFO  [stdout] (default-threads - 3)       after 
mdc.setRollbackOnly()
20:05:02,744 INFO  [stdout] (default-threads - 4) 
20:05:02,744 INFO  [stdout] (default-threads - 4) => Thu Mar 05 20:05:02 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:05:00 IST 2015
20:05:02,745 INFO  [stdout] (default-threads - 4)       before 
mdc.setRollbackOnly()
20:05:02,745 INFO  [stdout] (default-threads - 4)       after 
mdc.setRollbackOnly()
20:05:03,752 INFO  [stdout] (default-threads - 5) 
20:05:03,752 INFO  [stdout] (default-threads - 5) => Thu Mar 05 20:05:03 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:05:00 IST 2015
20:05:03,752 INFO  [stdout] (default-threads - 5)       before 
mdc.setRollbackOnly()
20:05:03,752 INFO  [stdout] (default-threads - 5)       after 
mdc.setRollbackOnly()
20:05:04,758 INFO  [stdout] (default-threads - 6) 
20:05:04,758 INFO  [stdout] (default-threads - 6) => Thu Mar 05 20:05:04 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:05:00 IST 2015
20:05:04,758 INFO  [stdout] (default-threads - 6)       before 
mdc.setRollbackOnly()
20:05:04,758 INFO  [stdout] (default-threads - 6)       after 
mdc.setRollbackOnly()
{code}


*NOTICE:* The redelivery is happening in 1 second  rather than (5 seconds)
    If rather than "activemq-rar-5.9.0.redhat-610379.rar"  if we use the Old 
resource adapter as the "activemq-rar-5.8.0.redhat-60024.rar" then the output 
appears with 5 seconds interval as following:
{code}
20:21:23,310 INFO  [stdout] (default-threads - 2) 
20:21:23,311 INFO  [stdout] (default-threads - 2) => Thu Mar 05 20:21:23 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:21:23 IST 2015
20:21:23,311 INFO  [stdout] (default-threads - 2)       before 
mdc.setRollbackOnly()
20:21:23,311 INFO  [stdout] (default-threads - 2)       after 
mdc.setRollbackOnly()
20:21:28,322 INFO  [stdout] (default-threads - 3) 
20:21:28,322 INFO  [stdout] (default-threads - 3) => Thu Mar 05 20:21:28 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:21:23 IST 2015
20:21:28,323 INFO  [stdout] (default-threads - 3)       before 
mdc.setRollbackOnly()
20:21:28,323 INFO  [stdout] (default-threads - 3)       after 
mdc.setRollbackOnly()
20:21:33,329 INFO  [stdout] (default-threads - 4) 
20:21:33,329 INFO  [stdout] (default-threads - 4) => Thu Mar 05 20:21:33 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:21:23 IST 2015
20:21:33,329 INFO  [stdout] (default-threads - 4)       before 
mdc.setRollbackOnly()
20:21:33,329 INFO  [stdout] (default-threads - 4)       after 
mdc.setRollbackOnly()
20:21:38,335 INFO  [stdout] (default-threads - 5) 
20:21:38,335 INFO  [stdout] (default-threads - 5) => Thu Mar 05 20:21:38 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:21:23 IST 2015
20:21:38,336 INFO  [stdout] (default-threads - 5)       before 
mdc.setRollbackOnly()
20:21:38,336 INFO  [stdout] (default-threads - 5)       after 
mdc.setRollbackOnly()
20:21:43,344 INFO  [stdout] (default-threads - 6) 
20:21:43,344 INFO  [stdout] (default-threads - 6) => Thu Mar 05 20:21:43 IST 
2015       TestMDB Received Message >  Message - Hello One !!!Thu Mar 05 
20:21:23 IST 2015
20:21:43,344 INFO  [stdout] (default-threads - 6)       before 
mdc.setRollbackOnly()
20:21:43,344 INFO  [stdout] (default-threads - 6)       after 
mdc.setRollbackOnly()
{code}

> activemq-rar-5.9.0.rar does not respect InitialRedeliveryDelay when 
> MaximumRedeliveries is defined.
> ---------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-5650
>                 URL: https://issues.apache.org/jira/browse/AMQ-5650
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker, RAR
>    Affects Versions: 5.9.0, 5.9.1
>         Environment: All
>            Reporter: JaySenSharma
>
> - If we deploy the "activemq-rar-5.9..rar" (or higher to that release) on 
> EAP6.3 and then define the resource adapter properties 
> "InitialRedeliveryDelay" and "MaximumRedeliveries" together, then it is 
> noticed that the InitialRedeliveryDelay is always set to 1 second.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to