完整教程:从零开始:ActiveMQ安装、Java应用实战与Web控制台体验

完整教程:从零开始:ActiveMQ安装、Java应用实战与Web控制台体验

导语:在Kafka之后,ActiveMQ作为Apache出品的开源消息中间件,依然在企业级应用中占据重要地位。本文将带你从零开始,完成ActiveMQ的本地安装、编写Java应用发送接收消息,并体验其Web管理控制台。同时,我们也会回顾ActiveMQ的"前世今生",了解它为何能在消息队列领域屹立不倒。

一、ActiveMQ简介:从JMS规范到开源消息总线ActiveMQ是Apache软件基金会出品的开源消息中间件,完全遵循Java Message Service (JMS) 1.1规范。它诞生于分布式系统蓬勃发展的时期,旨在解决分布式系统中各个组件之间的通信和协同问题。

作为最流行的开源消息总线,ActiveMQ支持多种消息模型,包括:

点对点(P2P)模式:消息仅被一个消费者接收发布/订阅(Pub/Sub)模式:消息可被多个消费者接收在当今的分布式架构中,ActiveMQ扮演着"消息桥梁"的角色,让系统间通信更加高效、可靠。

二、ActiveMQ的前世今生:从JMS规范到企业级应用1. 诞生背景:消息中间件的"混乱时代"在ActiveMQ出现之前,消息中间件市场非常混乱。各大厂商都有自己的实现,没有统一标准,导致各系统难以整合协作。为了解决这个问题,JMS(Java Message Service)规范应运而生,为Java消息中间件提供了一个统一标准。

关键点:ActiveMQ是完全遵循JMS规范开发的消息队列,这使得它成为Java企业级应用的首选消息中间件。

2. 发展历程2004年:ActiveMQ首次发布,基于JMS规范2007年:被Apache软件基金会纳入Apache项目2010年代:在企业级应用中广泛使用,成为JMS实现的首选2020年至今:随着Kafka等新消息队列的崛起,ActiveMQ在高性能场景下有所退让,但依然在企业级应用中保持重要地位3. 为何ActiveMQ能屹立不倒?完全支持JMS规范:与Spring等企业级框架无缝集成企业级特性:事务、持久化、高可用等丰富的管理工具:Web控制台、JMX等成熟稳定:经过多年生产环境验证 一句话总结:ActiveMQ是"企业级消息传递的稳健选择",Kafka是"大数据实时处理的性能之王"。

三、本地安装ActiveMQ:从下载到启动1. 环境要求JDK 8+(ActiveMQ 5.x版本需要JDK 8,不支持JDK 11+)2GB以上内存2. 下载与安装Windows系统访问官网下载页面:http://activemq.apache.org/download.html下载适合的版本(推荐5.18.3):apache-activemq-5.18.3-bin.zip解压到指定目录,例如:D:\activemq\apache-activemq-5.18.3进入bin\win64目录,双击activemq.bat启动Linux系统

# 下载

wget https://archive.apache.org/dist/activemq/5.18.3/apache-activemq-5.18.3-bin.tar.gz

# 解压

tar -xzf apache-activemq-5.18.3-bin.tar.gz

# 启动

cd apache-activemq-5.18.3/bin

./activemq start

3. 启动验证启动后,访问 http://localhost:8161/admin默认用户名/密码:admin/admin如果看到管理界面,说明安装成功⚠️ 常见问题:如果启动失败,检查端口占用(默认61616和8161)。使用netstat -ano | findstr 61616查看占用端口的进程,结束占用进程即可。

四、编写Java应用:发送和接收消息1. 创建Maven项目

org.apache.activemq

activemq-client

5.18.3

javax.jms

jms

1.1

2. 发送消息代码

import javax.jms.*;

import org.apache.activemq.ActiveMQConnectionFactory;

public class MessageProducer {

public static void main(String[] args) {

try {

// 创建连接工厂

ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");

// 创建连接

Connection connection = factory.createConnection();

connection.start();

// 创建会话

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 创建队列

Destination destination = session.createQueue("test.queue");

// 创建消息生产者

MessageProducer producer = session.createProducer(destination);

// 创建消息

TextMessage message = session.createTextMessage("Hello from ActiveMQ!");

// 发送消息

producer.send(message);

System.out.println("Message sent: " + message.getText());

// 关闭资源

producer.close();

session.close();

connection.close();

} catch (JMSException e) {

e.printStackTrace();

}

}

}

3. 接收消息代码

import javax.jms.*;

import org.apache.activemq.ActiveMQConnectionFactory;

public class MessageConsumer {

public static void main(String[] args) {

try {

// 创建连接工厂

ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");

// 创建连接

Connection connection = factory.createConnection();

connection.start();

// 创建会话

Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

// 创建队列

Destination destination = session.createQueue("test.queue");

// 创建消息消费者

MessageConsumer consumer = session.createConsumer(destination);

// 接收消息

Message message = consumer.receive(5000); // 等待5秒

if (message instanceof TextMessage) {

TextMessage textMessage = (TextMessage) message;

System.out.println("Message received: " + textMessage.getText());

}

// 关闭资源

consumer.close();

session.close();

connection.close();

} catch (JMSException e) {

e.printStackTrace();

}

}

}

4. 运行流程先启动MessageConsumer,使其处于等待接收状态再运行MessageProducer发送消息消费者将收到消息并打印五、体验Web管理控制台:消息监控与管理1. 访问控制台启动ActiveMQ后,打开浏览器访问:http://localhost:8161/admin

默认登录名/密码:admin/admin

2. 核心功能(1) 队列管理创建队列:点击"Queues" → “Add Queue”查看队列:在队列列表中,可以看到队列名称、消息数量、消费者数量等信息清空队列:点击队列名称 → "Purge"按钮(2) 主题管理创建主题:点击"Topics" → “Add Topic”查看主题:查看订阅者数量、消息数量(3) 消息监控查看消息:点击队列名称 → “View” → “Messages”,可以查看消息内容删除消息:在消息列表中选择消息 → "Delete"按钮3. 实战体验运行MessageProducer发送消息打开Web控制台,进入"Queues"页面找到"test.queue",点击查看在消息列表中,可以看到刚才发送的"Hello from ActiveMQ!"消息 小技巧:在控制台中,你还可以看到连接信息、消费者列表、消息速率等详细监控数据,对于排查问题非常有帮助。

六、总结:ActiveMQ在现代消息队列生态中的定位1. ActiveMQ vs Kafka特性ActiveMQKafka协议JMS规范自有协议性能中等(万级TPS)高(百万级TPS)适用场景企业级应用解耦、事务保证大数据、日志收集、实时分析消息模型P2P和Pub/Sub仅支持Topic学习曲线低中企业级支持优秀一般2. 为何ActiveMQ仍然值得企业选择?企业级特性:事务、持久化、高可用与Spring无缝集成:Spring JMS支持丰富的管理工具:Web控制台、JMX稳定性与可靠性:经过多年生产环境验证3. 未来展望虽然Kafka在高性能场景下更受欢迎,但ActiveMQ在企业级应用中依然有其独特优势。ActiveMQ 5.x版本虽然更新较慢,但其稳定性、易用性和与现有JMS系统的兼容性,让它在传统企业应用中仍占有一席之地。

个人建议:如果你的业务是电商、金融等传统企业级应用,ActiveMQ是个更稳妥的选择;如果是在大数据、实时分析领域,Kafka可能更合适。

七、结语ActiveMQ作为Apache出品的开源消息中间件,虽然在高性能场景下不如Kafka,但在企业级应用中依然保持着强大的生命力。通过本文,你已经完成了ActiveMQ的本地安装、编写了Java应用发送接收消息、并体验了Web管理控制台。

希望这篇教程能帮助你快速上手ActiveMQ,为你的分布式系统设计增添一个可靠的"消息桥梁"。

最后的小提示:ActiveMQ的Web控制台非常友好,建议多花时间熟悉它,这将大大提升你后续的开发和运维效率。

相关推荐

美国圣诞节放几天假(各国圣诞节过法和放假天数的介绍)
为什么手机Steam进不去?遇到问题怎么办?
监控sh365下载

为什么手机Steam进不去?遇到问题怎么办?

📅 09-18 👁️ 4337
负数在内存中的表示
监控sh365下载

负数在内存中的表示

📅 01-22 👁️ 9730
何选择最适合跑滴滴的车型?省油、耐用、高性价比的终极指南
苹果云端照片怎么看?手把手教你快速查看iCloud照片!
西门子五孔插座
beat365唯一官网

西门子五孔插座

📅 12-15 👁️ 2775
TBC怀旧服速刷荣誉方法 轻轻松松刷够3000荣誉
beat365唯一官网

TBC怀旧服速刷荣誉方法 轻轻松松刷够3000荣誉

📅 09-23 👁️ 5503
仓鼠的寿命有多长?死前有什么征兆?
365bet滚球网

仓鼠的寿命有多长?死前有什么征兆?

📅 06-27 👁️ 2174
梦幻西游69狮驼为什么没人玩
监控sh365下载

梦幻西游69狮驼为什么没人玩

📅 06-11 👁️ 1655