[jboss-user] [JBoss Messaging] - Re: JBM2 Beta4 with JBAS5.1 - setListener( null )

jmesnil do-not-reply at jboss.com
Wed Aug 19 04:59:43 EDT 2009


"simon_temple" wrote : Using the JMS API.  If I attempt to clear the currently registered listener on a QueueReceiver then I get an IllegalStateException when I try to receive on it:
  | 
  | javax.jms.IllegalStateException: Cannot call receive(...) - a MessageHandler is set
  |   | 	at org.jboss.messaging.core.client.impl.ClientConsumerImpl.receive(ClientConsumerImpl.java:161)
  |   | 	at org.jboss.messaging.jms.client.JBossMessageConsumer.getMessage(JBossMessageConsumer.java:213)
  |   | 	at org.jboss.messaging.jms.client.JBossMessageConsumer.receiveNoWait(JBossMessageConsumer.java:146)
  | 
  | I have a simple test case which looks this:
  | 
  | 			queueReceiver.setMessageListener( listener );
  |   | 
  |   | 			queueConnection.start(  );
  |   | 			thread.wait( 30000 );
  |   | 
  |   | 			queueReceiver.setMessageListener( null );
  |   | 			queueReceiver.receiveNoWait(  );
  |   | 
  | 
  | How can I clear the message listener attribute from a QueueReceiver once it's been set? 

Thre is a bug in the JBossMessageConsumer which prevents to unset the message listener. We'll fix it.

Please not however that even with this bug fixed, your test case may not work.
>From MessageConsumer.setMessageListener() javadoc:

anonymous wrote : 
  | The effect of calling MessageConsumer.setMessageListener while messages are being consumed by an existing listener or the consumer is being used to consume messages synchronously is undefined.
  | 

You should stop your queueConnection to prevent message consumption before unsetting the message listener to have a correct behavior.

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

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4250322



More information about the jboss-user mailing list