3.activeMQ消息消费者

  • 第一种
    •   创建消费者类
    • import javax.jms.Connection;
      import javax.jms.ConnectionFactory;
      import javax.jms.Destination;
      import javax.jms.JMSException;
      import javax.jms.MessageConsumer;
      import javax.jms.Session;
      import javax.jms.TextMessage;
      
      import org.apache.activemq.ActiveMQConnection;
      import org.apache.activemq.ActiveMQConnectionFactory;
      /*
       * 消息消费
       */
      public class JMSConsumer {
          static String userName=ActiveMQConnection.DEFAULT_USER;
          static String password=ActiveMQConnection.DEFAULT_PASSWORD;
          static String brokerURL=ActiveMQConnection.DEFAULT_BROKER_URL;
          public static void main(String[] args) {
              ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(userName, password, brokerURL);
              Connection connection = null ;
              Session session;// 会话,接受或发送消息的线程
              Destination destination;
              MessageConsumer messageConsumer;
              try {
                  connection=connectionFactory.createConnection();
                  connection.start();
                  session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                  destination=session.createQueue("FirstQueue");//创建连接的消息队列
                  messageConsumer=session.createConsumer(destination);
                  while(true){
                      TextMessage textMessage=(TextMessage) messageConsumer.receive(100000);//100000是100毫秒
                      if(textMessage!=null){
                          System.out.println(textMessage);
                          
                      }
                      else{
                          break;
                      }
                  }
              } catch (JMSException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              
          }
      
      }

      运行后显示

  •  第二种
  • 使用监听
  • import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.jms.JMSException;
    import javax.jms.MessageConsumer;
    import javax.jms.Session;
    
    import org.apache.activemq.ActiveMQConnection;
    import org.apache.activemq.ActiveMQConnectionFactory;
    /*
     * 消息消费
     */
    public class JMSConsumer2 {
        static String userName=ActiveMQConnection.DEFAULT_USER;
        static String password=ActiveMQConnection.DEFAULT_PASSWORD;
        static String brokerURL=ActiveMQConnection.DEFAULT_BROKER_URL;
        public static void main(String[] args) {
            ConnectionFactory connectionFactory=new ActiveMQConnectionFactory(userName, password, brokerURL);
            Connection connection = null ;
            Session session;// 会话,接受或发送消息的线程
            Destination destination;
            MessageConsumer messageConsumer;
            try {
                connection=connectionFactory.createConnection();
                connection.start();
                session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                destination=session.createQueue("FirstQueue1");//创建连接的消息队列
                messageConsumer=session.createConsumer(destination);
                messageConsumer.setMessageListener(new Listener());//注册消息监听
            } catch (JMSException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            while(true){
                
            }
        }
    
    }

  • ps:后来好奇把while注释掉又跑了一下,又可以了,神奇啊神奇
  • 参考

    •   http://blog.csdn.net/littlechenlin/article/details/46659287
    •   http://blog.csdn.net/wscxyok/article/details/49299797
原文地址:https://www.cnblogs.com/chen20135517/p/7761224.html