一、ActiveMQ概述
1.1 什么是ActiveMQ?
ActiveMQ是Apache软件基金会开发的一个开源消息中间件,它完全支持JMS(Java消息服务)规范,并提供了高可用性、高性能和可扩展性。ActiveMQ允许不同的应用程序通过消息传递进行异步通信,从而实现系统解耦。
1.2 ActiveMQ核心特性
- 多协议支持:支持OpenWire、STOMP、AMQP、MQTT等多种协议
- 持久化:支持多种持久化机制(KahaDB、JDBC、LevelDB等)
- 高级功能:支持消息组、延迟发送、定时发送
- 集群支持:支持主从复制、网络连接器等集群模式
- 安全机制:支持身份验证和授权机制
- JMS支持:完全支持JMS 1.1和J2EE 1.4规范
1.3 ActiveMQ架构
ActiveMQ采用了"生产者-消费者"模型,主要组件包括:
- Broker:消息服务器,负责接收和分发消息
- Producer:消息生产者,负责产生消息发送到Broker
- Consumer:消息消费者,从Broker获取消息并处理
- Queue/Topic:消息目的地,Queue为点对点模式,Topic为发布订阅模式
- Message:消息体,包含消息头、属性和消息内容
1.4 消息模型
ActiveMQ支持两种消息模型:
- 点对点模型(P2P):
- 基于队列(Queue)的消息传递模型
- 一条消息只能被一个消费者消费
- 消息被消费后从队列中删除
- 适合任务分发和负载均衡场景
- 发布/订阅模型(Pub/Sub):
- 基于主题(Topic)的消息传递模型
- 一条消息可以被多个消费者消费
- 需要消费者先订阅主题
- 适合广播场景和一对多通知
1.5 消息持久化
ActiveMQ支持多种持久化方式:
- KahaDB:默认的持久化方式,基于文件系统
- AMQ:基于日志文件的持久化机制
- JDBC:将消息持久化到关系型数据库
- LevelDB:高性能的持久化引擎
二、Spring Boot整合ActiveMQ
2.1 添加依赖
在pom.xml
中添加以下依赖:
<!-- Spring Boot Starter for ActiveMQ -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId>
</dependency><!-- 如果需要连接池 -->
<dependency><groupId>org.messaginghub</groupId><artifactId>pooled-jms</artifactId>
</dependency><!-- 支持JMS的JSON消息转换 -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId>
</dependency>
2.2 ActiveMQ配置
在application.properties
或application.yml
中添加ActiveMQ配置:
# ActiveMQ连接配置
spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.user=admin
spring.activemq.password=admin
spring.activemq.pool.enabled=true
spring.activemq.pool.max-connections=50# 是否使用发布订阅模式(默认为false,即使用点对点模式)
spring.jms.pub-sub-domain=false# 队列名称
activemq.queue.name=sample.queue
activemq.topic.name=sample.topic
2.3 ActiveMQ配置类
创建ActiveMQ配置类:
package com.ex