On 13 Sep 2009, at 20:03, czy11421 wrote:

Rob Davies wrote:

On 13 Sep 2009, at 17:55, czy11421 wrote:

Rob,
Thanks for your reply.

Here is another question. If I use MessageListener, how could I start to receive message ? Coding as below, the Listener will NOT output message. Did I miss something ?

Thanks.
Edward

//---------------------------------
session = conn.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE); javax.jms.Topic mytopic = session.createTopic("STOCKS.SUNW");

         Test2.MyListener listener = new Test2.MyListener();

javax.jms.TopicSubscriber subscriber = session.createSubscriber(mytopic);
                   /**  == works
         while(true){
             Message message = subscriber.receive();
             TextMessage text = (TextMessage) message;
             System.out.println(text.getText());
             Thread.sleep(1000);
         }
         **/

         subscriber.setMessageListener(listener);
//-------------------------------------------

//-----------------------------------
static class MyListener implements MessageListener {
     public void onMessage(Message message) {
         System.out.println("Message: ");
         TextMessage text = (TextMessage) message;
         try {
             System.out.println("Message: " + text.getText());
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 }
//-----------------------------------
You shouldn't set the listener on the same subscriber after calling receive() - its best to create a new session for each new subscriber

cheers,

Rob

Rob Davies
twitter.com/rajdavies
I work here: http://fusesource.com
My Blog: http://rajdavies.blogspot.com/
I'm writing this: http://www.manning.com/snyder/





Rob,
Thanks. I did not "set the listener on the same subscriber after calling receive()", as you see, the coding has been commented out.

If I use while(true){...}, it will work, but I switch to MessageListener, it can't output received message .

Thanks.
Edward

Hi Edward,

thats very strange - and certainly not normal behaviour - could you send a test case - to replicate what you are doing ?

cheers,

Rob

Rob Davies
http://twitter.com/rajdavies
I work here: http://fusesource.com
My Blog: http://rajdavies.blogspot.com/
I'm writing this: http://www.manning.com/snyder/





Reply via email to