ActiveMQ

发布于:2025-03-24 ⋅ 阅读:(28) ⋅ 点赞:(0)

一、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支持两种消息模型:

  1. 点对点模型(P2P)
    • 基于队列(Queue)的消息传递模型
    • 一条消息只能被一个消费者消费
    • 消息被消费后从队列中删除
    • 适合任务分发和负载均衡场景
  2. 发布/订阅模型(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.propertiesapplication.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.example.d

网站公告

今日签到

点亮在社区的每一天
去签到