"timfox" wrote : I just copied what you posted.
  | 
  | If you can package up a test program and exact step by step instructions I 
will try again

I think I forgot about one important thing - TTL of messages.

Here is a working example. I can replicate this bug all the time. "Cannot find 
delivery to cancel" appears after about 2 minutes.

Queue configuration:

  | <?xml version="1.0" encoding="UTF-8"?>
  | <server>
  |     <mbean code="org.jboss.jms.server.destination.QueueService" 
name="jboss.messaging.destination:service=Queue,name=testCancel" 
xmbean-dd="xmdesc/Queue-xmbean.xml">
  |             <depends 
optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
  |             <depends>jboss.messaging:service=PostOffice</depends>
  |             <attribute name="RedeliveryDelay">5000</attribute>
  |     </mbean>
  | </server>
  | 

TestMDB.java

  | package main.ejb;
  | 
  | import javax.annotation.Resource;
  | import javax.ejb.MessageDriven;
  | import javax.ejb.ActivationConfigProperty;
  | import javax.ejb.MessageDrivenContext;
  | import javax.jms.Message;
  | import javax.jms.MessageListener;
  | import javax.jms.TextMessage;
  | 
  | @MessageDriven(activationConfig = {
  |             @ActivationConfigProperty(propertyName="destinationType", 
propertyValue="javax.jms.Queue"),
  |             @ActivationConfigProperty(propertyName="destination", 
propertyValue="queue/testCancel"),
  |             @ActivationConfigProperty(propertyName="maxSession", 
propertyValue="1")
  |     })
  | 
  | public class TestMDB implements MessageListener {
  | 
  |     @Resource
  |     private MessageDrivenContext mdc;
  | 
  |     public void onMessage(Message msg) {
  |             try {
  |                     TextMessage textMsg = (TextMessage) msg;
  |                     System.out.println("got: " + textMsg.getText());
  |                     Thread.sleep(40000);
  |                     mdc.setRollbackOnly();
  |             } catch (Throwable te) {
  |                     te.printStackTrace();
  |                     mdc.setRollbackOnly();
  |             }
  |     }
  | }
  | 


Test.java (interface)

  | package main.ejb;
  | 
  | import javax.ejb.Remote;
  | 
  | @Remote
  | public interface Test {
  | 
  |     void testCancel();
  | }
  | 

TestBean.java

  | package main.ejb;
  | 
  | import javax.annotation.Resource;
  | import javax.ejb.Stateless;
  | import javax.jms.Connection;
  | import javax.jms.ConnectionFactory;
  | import javax.jms.JMSException;
  | import javax.jms.MessageProducer;
  | import javax.jms.Queue;
  | import javax.jms.Session;
  | import javax.jms.TextMessage;
  | 
  | @Stateless
  | public class TestBean implements Test {
  | 
  |     @Resource(mappedName = "ConnectionFactory")
  |     private ConnectionFactory factory;
  | 
  |     @Resource(mappedName = "queue/testCancel")
  |     private Queue queue;
  | 
  |     public void testCancel() {
  |             Connection connection = null;
  |             Session session = null;
  |             MessageProducer producer = null;
  |             try {
  |                     connection = factory.createConnection();
  |                     session = connection.createSession(true, 0);
  |                     producer = session.createProducer(queue);
  | 
  |                     TextMessage msg = session.createTextMessage();
  |                     msg.setText("just another test");
  | 
  |                     producer.setTimeToLive(90000);
  | 
  |                     producer.send(msg);
  |                     session.commit();
  | 
  |             } catch (Throwable te) {
  |                     te.printStackTrace();
  |             } finally {
  |                     try {
  |                             if (producer != null) {
  |                                     producer.close();
  |                             }
  |                             if (session != null) {
  |                                     session.close();
  |                             }
  |                             if (connection != null) {
  |                                     connection.close();
  |                             }
  |                     } catch (JMSException e) {
  |                             e.printStackTrace();
  |                     }
  |             }
  |     }
  | }
  | 

TestIt.java (Client)

  | package test;
  | 
  | import javax.naming.InitialContext;
  | 
  | import main.ejb.Test;
  | 
  | public class TestIt {
  | 
  |     public static void main(final String[] args) throws Exception {
  |             Test t = (Test) (new 
InitialContext()).lookup("TestBean/remote");
  |             while (true) {
  |                     t.testCancel();
  |                     Thread.sleep(20000);
  |             }
  |     }
  | }
  | 


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4075177#4075177

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4075177
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to