1. 简介
ActiveMQ是Apache软件基金会所研发的一款流行的消息代理,利用JMS协议(Java消息服务)提供异步通信架构的中间件。它是一个开源的、跨平台的、以Java为基础的实现,具有高可用、高可靠性、高效处理消息等特点,在企业级分布式应用系统中有着广泛的应用。在这篇文章中,我们将用ActiveMQ测试小程序来演示如何使用ActiveMQ。
2. 环境搭建
2.1 下载ActiveMQ
首先,我们需要从ActiveMQ官网下载ActiveMQ,下载地址为:http://activemq.apache.org/download.html。我们选择下载ActiveMQ最新版本5.16.0,然后进行解压。
wget https://downloads.apache.org/activemq/5.16.0/apache-activemq-5.16.0-bin.tar.gz
tar -xzvf apache-activemq-5.16.0-bin.tar.gz
2.2 启动ActiveMQ
解压完成之后,进入ActiveMQ的bin目录,执行以下命令启动ActiveMQ:
cd apache-activemq-5.16.0-bin/bin
./activemq start
可以通过访问Web管理界面,检查ActiveMQ是否启动成功。在浏览器中输入如下地址:
http://localhost:8161/admin/
出现如下界面则表示成功启动:
3. ActiveMQ测试小程序
我们使用Java语言编写一个ActiveMQ测试程序,该程序包含生产者和消费者两部分,用来模拟ActiveMQ消息的发送和处理。下面是程序的代码:
3.1 生产者代码
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Producer {
private static String url = "tcp://localhost:61616";
private static String queueName = "TEST_QUEUE";
private static int numberOfMessages = 10;
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
MessageProducer producer = session.createProducer(destination);
for (int i = 0; i < numberOfMessages; i++) {
TextMessage message = session.createTextMessage("Message " + i);
producer.send(message);
System.out.println("Sent message: " + message.getText());
}
connection.close();
}
}
上述代码定义了一个生产者对象,并使用ActiveMQConnectionFactory连接到ActiveMQ Broker。它创建了一个文本消息,并将其发送到名为“TEST_QUEUE”的队列中。
3.2 消费者代码
import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.*;
public class Consumer {
private static String url = "tcp://localhost:61616";
private static String queueName = "TEST_QUEUE";
public static void main(String[] args) throws JMSException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(url);
Connection connection = connectionFactory.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue(queueName);
MessageConsumer consumer = session.createConsumer(destination);
consumer.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("Received message: " + textMessage.getText());
} catch (JMSException e) {
System.out.println("Error reading message");
}
}
});
}
}
上述代码定义了一个消费者对象,并使用ActiveMQConnectionFactory连接到ActiveMQ Broker。它创建了一个队列用来接收生产者发送的消息,并设置了一个MessageListener来监听接收到的消息。
3.3 运行测试程序
在命令行中分别启动两个终端,一个运行Producer,一个运行Consumer。运行后,可以在Producer的控制台中看到它发送的消息,可以在Consumer的控制台中看到它接收的消息。
java Producer
java Consumer
4. 总结
本文简单介绍了ActiveMQ的概念以及它的环境搭建,然后演示了如何使用ActiveMQ测试小程序。正如我们所看到的,在使用ActiveMQ的时候,你需要创建生产者和消费者对象,并指定ActiveMQ Broker的连接地址。当生产者向队列发送消息时,消费者会通过定义的监听器接收它们。这些简单的步骤和代码片段,展示了ActiveMQ的强大功能,使它成为企业级应用程序中不可缺少的一部分。