RabbitMQ消息中间件核心概念与实践指南

RabbitMQ概述

RabbitMQ是一款采用Erlang编程语言构建的开源消息代理软件,其官方网站为:RabbitMQ官方平台。本文将深入解析其核心架构原理与基础应用方法。

环境部署

部署过程中需要关注两个关键端口配置:
* 15672:管理控制台的访问入口
* 5672:消息传输处理接口
完成安装后,通过http://127.0.0.1:15672即可访问管理界面。首次登录需使用预设的管理员凭证。成功登录后将显示系统概览面板:
RabbitMQ消息中间件核心概念与实践指南
RabbitMQ的系统架构示意图如下:
RabbitMQ消息中间件核心概念与实践指南
主要包含以下核心组件:
* 消息发布者:负责产生并发送消息的应用程序
* 消息订阅者:接收并处理消息的服务端
* 消息队列:临时存储待处理消息的缓冲区
* 路由交换器:决定消息分发路径的核心组件
* 虚拟空间:实现多租户隔离的逻辑分区
这些组件均可通过管理控制台进行配置,后续章节将详细介绍控制台操作。

消息传输机制

交换器详解

在Exchanges管理界面中,系统预置了多种交换器类型:
RabbitMQ消息中间件核心概念与实践指南
通过控制台的publish message功能可以模拟消息发送:
RabbitMQ消息中间件核心概念与实践指南
RabbitMQ消息中间件核心概念与实践指南
实验证明交换器不具备消息持久化能力。

队列创建

在Queues界面新建消息队列:
RabbitMQ消息中间件核心概念与实践指南
命名为hello.queue1
RabbitMQ消息中间件核心概念与实践指南
继续创建第二个队列hello.queue2,最终结果:
RabbitMQ消息中间件核心概念与实践指南
此时向amq.fanout发送消息仍无法到达队列,说明需要建立绑定关系。

建立绑定

在Exchange详情页的Bindings菜单中配置队列绑定:
RabbitMQ消息中间件核心概念与实践指南
完成两个队列的绑定后:
RabbitMQ消息中间件核心概念与实践指南

消息验证

再次发送测试消息:
RabbitMQ消息中间件核心概念与实践指南
在队列中查看接收到的消息:
RabbitMQ消息中间件核心概念与实践指南
通过get message功能查看消息详情:
RabbitMQ消息中间件核心概念与实践指南
RabbitMQ消息中间件核心概念与实践指南
此时若有消费者监听对应队列即可处理消息。

多租户隔离

用户权限

Admin界面展示用户管理功能:
RabbitMQ消息中间件核心概念与实践指南
关键字段说明:
* 用户名:系统标识
* 权限标签:定义用户角色
* 可访问空间:指定资源范围

虚拟主机

退出当前登录:
RabbitMQ消息中间件核心概念与实践指南
创建专属虚拟主机:
RabbitMQ消息中间件核心概念与实践指南
创建完成后:
RabbitMQ消息中间件核心概念与实践指南
切换虚拟主机后,队列列表发生变化:
RabbitMQ消息中间件核心概念与实践指南

SpringAMQP集成开发

基础配置

添加Maven依赖:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

快速示例

消息生产者

配置连接参数:

spring:
rabbitmq:
host: 127.0.0.1
port: 5672
virtual-host: /hmall
username: hmall
password: 123

发送消息示例:

@SpringBootTest
public class MessageSenderTest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void sendSimpleMessage() {
rabbitTemplate.convertAndSend("simple.queue", "测试消息");
}
}

消息消费者

监听处理消息:

@Component
public class MessageReceiver {
@RabbitListener(queues = "simple.queue")
public void processMessage(String content) {
System.out.println("收到消息:" + content);
}
}

工作队列模式

创建work.queue队列:
RabbitMQ消息中间件核心概念与实践指南
批量发送测试:

@Test
public void testWorkQueue() {
for(int i=0; i<50; i++){
rabbitTemplate.convertAndSend("work.queue", "消息"+i);
}
}

消息路由模式

广播模式

配置示例:

@Configuration
public class BroadcastConfig {
@Bean
public FanoutExchange fanoutExchange(){
return new FanoutExchange("broadcast.exchange");
}
}

定向路由

注解式声明:

@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "route.queue1"),
exchange = @Exchange(name = "direct.exchange", type = ExchangeTypes.DIRECT),
key = {"red","blue"}
))
public void receiveDirectMessage(String msg){
System.out.println("定向消息:"+msg);
}

主题匹配

通配符示例:

@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "topic.queue"),
exchange = @Exchange(name = "topic.exchange", type = ExchangeTypes.TOPIC),
key = "china.#"
))
public void receiveTopicMessage(String msg){
System.out.println("主题消息:"+msg);
}

消息序列化

配置JSON转换器:

@Bean
public MessageConverter jsonMessageConverter(){
return new Jackson2JsonMessageConverter();
}

常用扩展组件

RabbitMQ支持多种功能扩展插件:
* 运维监控插件:提供Web管理界面
* 跨节点同步插件:实现集群间消息复制
* 协议支持插件:扩展STOMP等协议支持
* 监控指标插件:集成Prometheus监控
* 延迟队列插件:支持定时消息投递
[注:原文所有图片链接均保留,二维码已移除]

文章整理自互联网,只做测试使用。发布者:Lomu,转转请注明出处:https://www.it1024doc.com/8747.html

(0)
LomuLomu
上一篇 2025 年 5 月 11 日 上午12:30
下一篇 2025 年 5 月 11 日

相关推荐

  • 新版 Cursor 把其他 AI 编程工具按在地上摩擦了!

    大家好,我是汤师爷~ AI编程助手Cursor背后的Anysphere公司刚刚完成了1亿美元的B轮融资,估值直接飙升至26亿美元。 四个月前,这家公司刚拿下6000万美元,估值还只有4亿美元。如今,增长6.5倍,这速度,简直让人怀疑开挂了。 Anysphere不仅融资拿到手软,收入增长更是逆天。 公司从4月的年收入400万美元,短短六个月后,10月的月收入竟…

    2025 年 1 月 15 日
    53300
  • 系统突遇百倍流量冲击?资深架构师的应对策略全解析

    “当你负责的核心系统某天突然面临百倍流量冲击,该如何紧急应对?”——这并非虚构场景,而是某科技公司面试中的真实考题。当候选人回答“简单扩容”时,面试官立即追问:“若资源不足或数据库崩溃呢?”瞬间暴露出技术方案的局限性。这类问题如同技术照妖镜,能精准检验工程师的系统性思维。仅靠“增加服务器”这类条件反射式的回答,往往暴露架构认知的短板。完整的解决方案需融合流量…

    2025 年 5 月 13 日
    26600
  • 探索Java字符串:String类的核心操作指南

    ❀❀❀ 欢迎持续关注,每日收获编程小技巧 ❀❀❀内容概览一、String类概述二、String对象的创建方式1. 直接赋值法2. 构造方法实例化三、String类高频方法解析1 字符串对比操作1.1 ==运算符的陷阱1.2 equals方法应用1.3 忽略大小写比较1.4 字典序比较方法2 字母大小写转换2.1 转大写方法2.2 转小写方法3 获取字符串长度…

    未分类 2025 年 5 月 12 日
    16700
  • 【永久激活】IDEA 2024激活破解保姆级教程,附激活码+工具,亲测可用

    IntelliJ IDEA 是 Java 编程语言的集成开发环境,被公认为最好的 Java 开发工具之一。本文分享通过脚本免费激活 IDEA 等 Jetbrains 全家桶工具,支持 2021 以上的版本包括最新版本。 一、下载并安装 IDEA 大家可以直接在 JetBrains 官网下载最新版本的 IDEA。安装步骤非常简单,按照提示一步一步进行即可。 二…

    未分类 2024 年 6 月 23 日
    1.8K00
  • 成长之路:从编程小白到技术探索者

    掌握计算机思维并非一日之功,而是需要持续积累的过程。每个人的思维方式都独具特色,毕竟我们不是设定好程序的机器。常言道要换位思考,因为身处其中往往看不清全貌。曾在一本名为《代码大全》的书中读到关于结对编程的建议,这让我意识到:许多任务单靠个人难以完成。即便拥有双重智慧,也只能影响自己。无论是家庭还是企业,其发展轨迹都难以被个人掌控——有人能延缓这个过程,但无法…

    未分类 2025 年 5 月 14 日
    22700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信