接着前一篇来,配置要求是一样的,消费者消费队列消息分7步走
1.创建connection工厂
2.创建connection
3.创建会话session
4.创建目的地(现在是连接队列)queue
5.创建消费者consumer
6.监听服务器消费消息receive()
7.释放资源
监听方法receive()有两个重载方法
(1).receive()无参方法,使用本方法监听服务器队列时,若没有消息可以消费,则会一直监听等待下一个消息到来,有消息就会直接消费。
(2).receive(long l)有参方法,参数为长整数毫秒,比如receive(4000L)表示若服务器无消息可以消费,则等待4秒,4秒之后任然无消息就会停止等待,释放资源(这个方法在服务器负载较大时可以减轻服务器负担)。
代码示例:
package com.xiaowu.activemq;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import static javax.jms.Session.AUTO_ACKNOWLEDGE;
public class JmsConsumer {
public static final String ACTIVEMQ_URL="tcp://152.136.12.27:61616";
public static final String Queuep="queue01";
public static void main(String[] args) throws JMSException {
//1.create factory
ActiveMQConnectionFactory activeMQConnectionFactory=new ActiveMQConnectionFactory(ACTIVEMQ_URL);
//2.create connect and start
Connection connection=activeMQConnectionFactory.createConnection();
connection.start();
//3.create session
Session session = connection.createSession(false, AUTO_ACKNOWLEDGE);
//4.create 目的地
Queue queue=session.createQueue(Queuep);
//5.create consumer
MessageConsumer messageConsumer=session.createConsumer(queue);
while (true){
//6.监听并获取消息
TextMessage message =(TextMessage) messageConsumer.receive();
if(null!=message){
System.out.println("消费者消费消息:"+message.getText());
}else {
break;
}
}
//7.关闭资源
messageConsumer.close();
session.close();
connection.close();
}
}
运行效果(消费的消息是上一篇生产者生产的)
运行后服务器端:(对比上一篇运行后服务器端的截图发现,生产的消息被消费完了,消费者等待数量为1)