[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