1、创建消息生产者
package com.jacob.activemq.queue;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
/**
* @ClassName JmsProduce
* @Description TODO
* @Author Lucifer Lee
* @Date 2022/3/28 8:20
*/
public class JmsProduce {
private static final String ACTIVEMQ_URL = "tcp://42.193.113.24:61616";
private static final String QUEUE_NAME = "queue01";
public static void main(String[] args) throws JMSException {
//1、创建连接工厂,按照给定的url地址,采用默认用户和密码
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
//2、连接工厂,获得连接启动访问
Connection connection = activeMQConnectionFactory.createConnection();
connection.start();
//3、创建会话session
//两个参数。事务、签收
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//4、创建目的地(具体是队列还是主题topic)
Queue queue = session.createQueue(QUEUE_NAME);
//5、创建消息生产者
MessageProducer producer = session.createProducer(queue);
//6、生产消息并发送到MQ消息队列里
for (int i = 1; i <= 3; i++) {
//7、创建消息
TextMessage textMessage = session.createTextMessage("msg---" + i);
//8、通过messageproducer发送给mq
producer.send(textMessage);
}
//9、关闭资源
producer.close();
session.close();
connection.close();
System.out.println("消息发布到MQ队列完成!");
}
}
2、创建消息消费者
package com.jacob.activemq.queue;
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
import java.io.IOException;
/**
* @ClassName JmsConsumer
* @Description TODO
* @Author Lucifer Lee
* @Date 2022/3/28 18:51
*/
public class JmsConsumer {
private static final String ACTIVEMQ_URL = "tcp://42.193.113.24:61616";
private static final String QUEUE_NAME = "queue01";
public static void main(String[] args) throws JMSException, IOException {
//1、创建连接工厂,按照给定的url地址,采用默认用户和密码
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(ACTIVEMQ_URL);
//2、连接工厂,获得连接启动访问
Connection connection = activeMQConnectionFactory.createConnection();
connection.start();
//3、创建会话session
//两个参数。事务、签收
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//4、创建目的地(具体是队列还是主题topic
Queue queue = session.createQueue(QUEUE_NAME);
//5、创建消费者
MessageConsumer consumer = session.createConsumer(queue);
//同步阻塞方式,
/*while (true) {
TextMessage textMessage = (TextMessage) consumer.receive(5000L);
if (null != textMessage) {
System.out.println("消费者接收消息:" + textMessage.getText());
} else {
break;
}
}
consumer.close();
session.close();
connection.close();*/
//通过监听方式消费消息
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
if (null != message && message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("MessageListene消费者接收消息:" + textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
});
System.in.read();
consumer.close();
session.close();
connection.close();
}
}