ActiveMQ是一个流行的开源消息中间件,它支持多种消息传递模式,包括点对点(queue)模式和发布/订阅(topic)模式。以下是一个ActiveMQ的入门案例,分别展示了如何使用这两种模式。
1. 准备工作
首先,确保你已经安装了ActiveMQ,并且已经启动了ActiveMQ服务。你可以从Apache ActiveMQ的官方网站下载并安装。
2. 点对点(Queue)模式
在点对点模式中,消息被发送到一个队列(Queue)中,并且只有一个消费者能够接收到这个消息。
2.1 创建Maven项目
创建一个新的Maven项目,并添加ActiveMQ的依赖到你的pom.xml
文件中。
2.2 编写生产者(Producer)代码
生产者负责将消息发送到队列中。
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsProducer {
public static void main(String[] args) throws JMSException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 创建连接
Connection connection = connectionFactory.createConnection();
// 开启连接
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目标(队列)
Destination destination = session.createQueue("FirstQueue");
// 创建生产者
MessageProducer producer = session.createProducer(destination);
// 创建消息
TextMessage message = session.createTextMessage("Hello, ActiveMQ!");
// 发送消息
producer.send(message);
// 关闭资源
producer.close();
session.close();
connection.close();
}
}
2.3 编写消费者(Consumer)代码
消费者负责从队列中接收消息。
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class JmsConsumer {
public static void main(String[] args) throws JMSException {
// 创建连接工厂
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
// 创建连接
Connection connection = connectionFactory.createConnection();
// 开启连接
connection.start();
// 创建会话
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// 创建目标(队列)
Destination destination = session.createQueue("FirstQueue");
// 创建消费者
MessageConsumer consumer = session.createConsumer(destination);
// 接收消息
Message message = consumer.receive();
if (message instanceof TextMessage) {
TextMessage textMessage = (TextMessage) message;
System.out.println("Received: " + textMessage.getText());
}
// 关闭资源
consumer.close();
session.close();
connection.close();
}
}
2.4 运行测试
先运行消费者代码,再运行生产者代码。你应该能在消费者控制台看到生产者发送的消息。
3. 发布/订阅(Topic)模式
在发布/订阅模式中,消息被发布到一个主题(Topic)中,所有订阅了这个主题的消费者都能接收到这个消息。
3.1 编写生产者(Producer)代码
生产者代码与队列模式的生产者代码类似,只是目标(Destination)需要创建为主题(Topic)。
Destination destination = session.createTopic("FirstTopic");
3.2 编写消费者(Consumer)代码
消费者代码也与队列模式的消费者代码类似,只是同样需要创建为主题(Topic)。
Destination destination = session.createTopic("FirstTopic");
3.3 运行测试
启动多个消费者,然后运行生产者代码。所有启动的消费者都应该能接收到生产者发送的消息。
这就是ActiveMQ入门案例的基本内容,包括了队列(Queue)模式和主题(Topic)模式的简单实现。通过这个案例,你可以了解ActiveMQ的基本使用方法和消息传递模式。在实际项目中,你可能需要根据具体需求进行更复杂的配置和使用。