SimpleQueueReceiver.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:3k
源码类别:

Java编程

开发平台:

Java

  1. package demojms;
  2. /*
  3.  * @(#)SimpleQueueReceiver.java
  4.  */
  5. import javax.jms.*;
  6. import javax.naming.*;
  7. import java.util.*;
  8. public class SimpleQueueReceiver {
  9.   public static void main(String[] args) {
  10.     String queueName = null;
  11.     Context jndiContext = null;
  12.     QueueConnectionFactory queueConnectionFactory = null;
  13.     QueueConnection queueConnection = null;
  14.     QueueSession queueSession = null;
  15.     Queue queue = null;
  16.     QueueReceiver queueReceiver = null;
  17.     TextMessage message = null;
  18.     /*
  19.      * 从命令行读queue并显示
  20.      */
  21.     /*if (args.length != 1) {
  22.         System.out.println("Usage: java SimpleQueueReceiver " +
  23.             "<queue-name>");
  24.         System.exit(1);
  25.              }*/
  26.     //queueName = new String(args[0]);
  27.     queueName = "MyTestJMSQueue";
  28.     System.out.println("Queue name is " + queueName);
  29.     /*
  30.      * 如果不存在JNDI InitialContext对象,就创建一个
  31.      */
  32.     try {
  33.       Properties properties = null;
  34.       String url = "t3://127.0.0.1:7001";
  35.       properties = new Properties();
  36.       properties.put(Context.INITIAL_CONTEXT_FACTORY,
  37.                      "weblogic.jndi.WLInitialContextFactory");
  38.       properties.put(Context.PROVIDER_URL, url);
  39.       jndiContext = new InitialContext(properties);
  40.     }
  41.     catch (NamingException e) {
  42.       System.out.println("Could not create JNDI " +
  43.                          "context: " + e.toString());
  44.       System.exit(1);
  45.     }
  46.     /*
  47.      * 寻找connection factory和queue,如果两者读不存在,则退出
  48.      */
  49.     try {
  50.       queueConnectionFactory = (QueueConnectionFactory)
  51.           jndiContext.lookup("MyTestJMS");
  52.       //System.out.println(jndiContext);
  53.       queue = (Queue) jndiContext.lookup("MyTestJMSQueue");
  54.     }
  55.     catch (NamingException e) {
  56.       System.out.println("JNDI lookup failed: "
  57.                          + e.toString());
  58.       System.exit(1);
  59.     }
  60.     /*
  61.      * 创建一个connection,再从connection创建session
  62.      * 创建receiver和文本消息,从queue接收所有的消息
  63.      * 最后,关闭connection
  64.      */
  65.     try {
  66.       queueConnection =
  67.           queueConnectionFactory.createQueueConnection();
  68.       queueSession =
  69.           queueConnection.createQueueSession(false,
  70.                                              Session.AUTO_ACKNOWLEDGE);
  71.       queueReceiver = queueSession.createReceiver(queue);
  72.       queueConnection.start();
  73.       while (true) {
  74.         Message m = queueReceiver.receive(1);
  75.         if (m != null) {
  76.           if (m instanceof TextMessage) {
  77.             message = (TextMessage) m;
  78.             System.out.println("Reading message: " +
  79.                                message.getText());
  80.           }
  81.           else {
  82.             break;
  83.           }
  84.         }
  85.       }
  86.     }
  87.     catch (JMSException e) {
  88.       System.out.println("Exception occurred: " +
  89.                          e.toString());
  90.     }
  91.     finally {
  92.       if (queueConnection != null) {
  93.         try {
  94.           queueConnection.close();
  95.         }
  96.         catch (JMSException e) {}
  97.       }
  98.     }
  99.   }
  100. }