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

Reply via email to