JMS客户为何只能同步接收消息而不能异步?
代码如下:
发送消息正常。但是接收消息不能收到已经发送的消息,而只能接受con.start()之后发送的消息。我开一个程序接收,然后再开同一个程序发送,接收窗口显示正确。但是如果不开接收窗口,发送的消息都到那里去了?如何获得已经发送的消息?
我使用的是J2EE 1.3服务器。
public static void main(String[] args)
{
try
{ InitialContext context = new InitialContext()
TopicConnectionFactory factory = (TopicConnectionFactory)context.lookup("MyJMSFactory");
Topic orderTopic = (Topic)context.lookup("MyJMSTopic");
TopicConnection con = factory.createTopicConnection();
TopicSession session = con.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
if(args.length>0&&args[0].equalsIgnoreCase("send"))
{
TopicPublisher publisher = session.createPublisher(orderTopic);
TextMessage message = session.createTextMessage();
message.setText("Hello world! i am a jms client.");
publisher.publish(message);
System.out.println("send jms message ok!");
}
else if(args.length>0&&args[0].equalsIgnoreCase("get"))
{
TopicSubscriber topicSubscriber = session.createSubscriber(orderTopic);
topicSubscriber.setMessageListener(new Application1());
System.out.println("start listen...");
con.start();
try {
Thread.sleep(30000);
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("listen ok!");
}
con.close();
System.exit(0);
}
catch(Exception e)
{
e.printStackTrace();
}
}