当前位置: 首页 > news >正文

ActiveMQ

一、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.ex

相关文章:

  • Java XML与JSON相互转换详解
  • Docker Compose
  • git tag以及git
  • 视频翻译器免费哪个好?轻松玩转视频直播翻译
  • JavaScript如何判断一个变量是否为数组的多种方法及原理,除Array.isArray()外还有哪些方式?
  • 鸿蒙保姆级教学
  • MCP入门实践,Cursor+MCP
  • System.getProperty(“user.dir“)获取用户工作目录及绝对路径和相对路径的说明
  • Linux驱动学习笔记(一)
  • 爬虫 crawler 入门爬取不设防网页 并实现无限增生
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例4,TableView15_04导出当前页数据示例
  • C++ 入门第27天:异常处理详细讲解
  • 麒麟V10 arm cpu aarch64 下编译 RocketMQ-Client-CPP 2.2.0
  • 【OCR】总结github上开源 OCR 工具:让文字识别更简单
  • YOLO obb全流程
  • mapbox-gl源码中解析style加载地图过程详解
  • win本地部署Dify,并接入deepseek-r1
  • 【Java集合夜话】第1篇:拨开迷雾,探寻集合框架的精妙设计
  • 蓝桥杯_拔河_java
  • Flutter:页面滚动,导航栏背景颜色过渡动画
  • 怎样自己做网站推广/优化系统
  • 手机端网站的建设/百度广告竞价
  • 在手机制作网站/手机360优化大师官网
  • 麻城网站制作公司/地推项目发布平台
  • 太原企业网站模板建站/湖南企业竞价优化服务
  • 企业网站建设该怎么描述/今日疫情最新消息全国31个省