ActiveMQ队列模式-生产消费
一、配置pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.study</groupId>
<artifactId>activeMQ_demo1</artifactId>
<version>1.0.0</version>
<properties>
<activemq.version>5.15.9</activemq.version>
<slf4j.version>1.7.25</slf4j.version>
<lombok.version>1.16.18</lombok.version>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-all -->
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>${activemq.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!--log4的通用配置 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</project>
二、创建队列生产者
package com.study.queue;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
/*
* 队列生产者
*/
public class TestQueueProducer {
private static String brokerURL = "tcp://0.0.0.0:61616";
private static String queueName = "testQueue";
public static void main(String[] args) {
//1.创建ConnectionFactory 需要指定服务端ip和端口
ConnectionFactory factory = new ActiveMQConnectionFactory(brokerURL);
//2.使用ConnectionFactory创建connection对象
Connection connection;
try {
connection = factory.createConnection();
//3.开启连接,调用Connection对象的start方法。
connection.start();
//使用Connection对象创建session对象
//4.第一个参数是否开启事务,第二个参数是接收者的签收状态
Session session =connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.使用session对象创建Destination对象 目标创建一个Queue对象
Queue queue = session.createQueue(queueName);
//6.使用session对象创建一个producer对象
MessageProducer messageProducer = session.createProducer(queue);
//7.创建Message对象
TextMessage message = session.createTextMessage();
message.setText("hello activeMq");
//8.使用producer对象发送消息
messageProducer.send(message);
//9.关闭资源
messageProducer.close();
session.close();
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
三、创建队列消费者
package com.study.queue;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnectionFactory;
/*
* 创建队列消费者
*/
public class TestQueueConsumer {
private static String brokerURL = "tcp://0.0.0.0:61616";
private static String queueName = "testQueue";
public static void main(String[] args) {
//1.创建ConnectionFactory 需要指定服务端ip和端口
ConnectionFactory factory = new ActiveMQConnectionFactory(brokerURL);
//2.使用ConnectionFactory创建connection对象
Connection connection;
try {
connection = factory.createConnection();
//3.开启连接,调用Connection对象的start方法。
connection.start();
//使用Connection对象创建session对象
//4.第一个参数是否开启事务,第二个参数是接收者的签收状态
Session session =connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
//5.使用session对象创建Destination对象 目标创建一个Queue对象
Queue queue = session.createQueue(queueName);
//6.使用session对象创建一个Consumer对象
MessageConsumer messageConsumer = session.createConsumer(queue);
//7.监听消息
Message message = messageConsumer.receive();
if(message instanceof TextMessage){
TextMessage textMessage = (TextMessage) message;
System.err.println("接收到的消息内容:"+textMessage.getText());
}
//8.关闭资源
messageConsumer.close();
session.close();
connection.close();
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
四、运行项目
1.开启我们的activeMQ
2.运行生产者代码
平台上会出现我们发送的消息
3.运行消费者代码
平台上显示消息成功被接收