1、需要添加在上一篇博客中说到的依赖jar包
2、创建创建消费者
package com.activemq.demo;
import java.util.concurrent.atomic.AtomicInteger;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
public class Comsumer {
private static final String USERNAME = ActiveMQConnection.DEFAULT_USER;
private static final String PASSWORD = ActiveMQConnection.DEFAULT_PASSWORD;
private static final String BROKEN_URL = "tcp://192.168.0.0:61616";
ConnectionFactory connectionFactory;
Connection connection;
Session session;
ThreadLocal<MessageConsumer> threadLocal = new ThreadLocal<>();
AtomicInteger count = new AtomicInteger();
public void init() {
try {
connectionFactory = new ActiveMQConnectionFactory(USERNAME,
PASSWORD, BROKEN_URL);
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
} catch (JMSException e) {
e.printStackTrace();
}
}
public void getMessage(String disname) {
try {
Queue queue = session.createQueue(disname);
MessageConsumer consumer = null;
if (threadLocal.get() != null) {
consumer = threadLocal.get();
} else {
consumer = session.createConsumer(queue);
threadLocal.set(consumer);
}
while (true) {
Thread.sleep(1000);
TextMessage msg = (TextMessage) consumer.receive();
if (msg != null) {
msg.acknowledge();
System.out.println("接收到消息:" + msg.getText() + " || "
+ count.getAndIncrement());
} else {
break;
}
}
} catch (JMSException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
3、测试
package com.activemq.demo;
public class TestGetMsg {
public static void main(String[] args) {
Comsumer comsumer = new Comsumer();
comsumer.init();
TestGetMsg testGetMsg = new TestGetMsg();
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
new Thread(testGetMsg.new ProductorMq(comsumer)).start();
}
private class ProductorMq implements Runnable {
Comsumer comsumer;
public ProductorMq(Comsumer comsumer) {
this.comsumer = comsumer;
}
@Override
public void run() {
while (true) {
comsumer.getMessage("LGZ-MQ");
// try {
// Thread.sleep(500);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
}
}
}
}