服务器 频道

JMS服务器openJms入门

//创建Topic的会话,用于接收信息

  topicSession =

  topicConnection.createTopicSession(false,

  Session.AUTO_ACKNOWLEDGE);

  topic = (Topic) context.lookup("topic1");

  //创建Topic subscriber

  topicSubscriber = topicSession.createSubscriber(topic);

  //设置订阅监听

  topicSubscriber.setMessageListener(this);

  //启动信息接收

  topicConnection.start();

  } catch (NamingException e) {

  e.printStackTrace();

  } catch (JMSException e) {

  e.printStackTrace();

  }

  }

  public static void main(String[] args) {

  System.out.println("非同步定购消息的接收:");

  try {

  TopicSubscribeAsynchronous listener =

  new TopicSubscribeAsynchronous();

  Thread.sleep(1000);

  } catch (InterruptedException e) {

  e.printStackTrace();

  }

  }

  //收到订阅信息后自动调用此方法

  public void onMessage(Message message) {

  try {

  String messageText = null;

  if (message instanceof TextMessage)

  messageText = ((TextMessage) message).getText();

  System.out.println(messageText);

  } catch (JMSException e) {

  e.printStackTrace();

  }

  }

  }

  编译好后,启动openJms服务,打开admin管理台,为了运行方便,这里先列出三个类的运行命令:

  java -cp .\; -Djava.ext.dirs=.\lib; javayou.demo.openjms.TopicPublish

  java -cp .\; -Djava.ext.dirs=.\lib; javayou.demo.openjms.TopicSubscribeSynchronous

  java -cp .\; -Djava.ext.dirs=.\lib; javayou.demo.openjms.TopicSubscribeAsynchronous

  先运行2个接收命令,再运行发布命令,可以看到控制台的Topic有消息接收,并且接收1和2都有消息接收的提示,到此完成演示,由于是非持久订阅,所以可以看到控制台上的Topic消息条数不会减少。

0
相关文章