- 第一种
- 创建消费者类
-
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