Uploaded image for project: 'JBoss A-MQ'
  1. JBoss A-MQ
  2. ENTMQ-338

Persistent message lost when java.io.InterruptedIOException happens with manual invervention

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • JBoss A-MQ 6.1
    • JBoss A-MQ 6.0
    • broker
    • None

      1.Start the JBoss AMQ

      2.deploy the following the in the EAP 6.0.1 deployment folder i.e. /jboss-eap-6.0/standalone/deployments ( jboss-eap-6.0.1.zip can be downloaded from http://download.eng.pnq.redhat.com/released/JBEAP-6/6.0.1/zip/ )
      A).amq-5.8.0.redhat-60024 with ra.xml attached to the case (find it in attached zip file)
      B)amqmdb.jar
      C)amq-web.war

      3.Add the following the in the standalone-full.xml

      <subsystem xmlns="urn:jboss:domain:resource-adapters:1.0">
      <resource-adapters>
      <resource-adapter>
      <archive>
      amq-5.8.0.redhat-60024.rar
      </archive>
      <transaction-support>XATransaction</transaction-support>
      <config-property name="Password">
      admin
      </config-property>
      <config-property name="UserName">
      admin
      </config-property>
      <config-property name="ServerUrl">
      tcp://0.0.0.0:61616?jms.redeliveryPolicy.maximumRedeliveries=3&jms.redeliveryPolicy.initialRedeliveryDelay=5000&jms.redeliveryPolicy.redeliveryDelay=5000
      </config-property>
      <connection-definitions>
      <connection-definition class-name="org.apache.activemq.ra.ActiveMQManagedConnectionFactory" jndi-name="java:/activemq/ConnectionFactory" enabled="true" use-java-context="true" pool-name="ActiveMQConnectionFactoryPool" use-ccm="true">
      <xa-pool>
      <min-pool-size>1</min-pool-size>
      <max-pool-size>20</max-pool-size>
      </xa-pool>
      </connection-definition>
      </connection-definitions>
      <admin-objects>
      <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/activemq/queue_out" enabled="true" use-java-context="true" pool-name="ActiveMQQueue.queue_out">
      <config-property name="PhysicalName">
      queue.queue_out
      </config-property>
      </admin-object>
      <admin-object class-name="org.apache.activemq.command.ActiveMQQueue" jndi-name="java:/activemq/queue_in" enabled="true" use-java-context="true" pool-name="ActiveMQQueue.queue_in">
      <config-property name="PhysicalName">
      queue.queue_in
      </config-property>
      </admin-object>
      </admin-objects>
      </resource-adapter>
      </resource-adapters>
      </subsystem>

      and

      <mdb>
      <resource-adapter-ref resource-adapter-name="amq-5.8.0.redhat-60024"/>
      </mdb>

      Now start the EAP 6.0.1 Server as follows " ./jboss-eap-6.0/bin/standalone.sh -c standalone-full.xml "

      3.Connect to the application server using a debugger. Set a breakpoint on the first line of MessageListener.onMessage method

      4.Put a message onto queue.queue_out by hitting the application as follows

      http://localhost:8080/amq-web/JMSClientServlet

      When the breakpoint is hit then throw manually a RuntimeException (e.g. in Eclipse highlight the 'throw new RuntiemException(...)' line, right-click and choose Execute).

      5a. Expected:
      Message is redelivered after redelivery delay. After redelivery attempts limit is reached the message lands on DLQ.

      5b. Actual:
      Exception is thrown , message is lost.

        1. amq_tx_issue_single_consumer.log
          1.63 MB
          abhishek vijra
        2. queueconsumer.war
          5.23 MB
          abhishek vijra
        3. server-etfm-dev.xml
          68 kB
          abhishek vijra

              gtully@redhat.com Gary Tully
              avijra_jira abhishek vijra (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: