RabbitMq安装

前言

需求:将考试交卷算分功能使用队列处理,调研结果如下
为什么选择RabbitMQ做交卷算分的功能呢,不用其他中间件呢?
在考试交卷场景中,选择 RabbitMQ 而非其他中间件主要基于以下考量:
1. 可靠性优先
考试系统对数据完整性要求极高,交卷消息必须确保不丢失。RabbitMQ 通过以下机制提供强可靠性保障:

生产者确认机制:支持同步 / 异步确认,确保消息成功发送到 Broker。
持久化策略:队列和消息均支持持久化,即使 Broker 重启也不会丢失。
手动 ACK 机制:消费者处理完成后才确认消息,失败时可重新入队。
死信队列:自动收集处理失败的消息,便于人工干预。

相比之下,Kafka 的可靠性依赖客户端配置,而 ActiveMQ 的性能瓶颈可能影响关键操作。
2. 保证顺序性
考试系统通常要求按提交顺序处理试卷(如先交卷的先批改)。RabbitMQ 的单队列 FIFO 特性天然支持顺序性,而 Kafka 仅保证分区内有序,需额外配置;RocketMQ 虽支持顺序消息,但实现复杂度较高。
3. 事务性支持
若考试系统涉及积分扣减、成绩记录等多资源操作,RabbitMQ 的事务消息(配合手动 ACK)可确保原子性。Kafka 的事务仅支持生产者,而 RocketMQ 的事务机制更复杂,不适合简单场景。
4. 低延迟与简单运维
考试交卷需要即时响应,RabbitMQ 的单节点吞吐量(约 10k TPS)足以满足大多数考试系统需求,且部署简单(单节点或镜像集群)。相比之下,Kafka/RocketMQ 的集群依赖 ZooKeeper,运维成本较高。
5. 社区生态与工具链
RabbitMQ 拥有成熟的管理界面、丰富的插件(如延迟队列、消息追踪),以及完善的 Java 客户端(RabbitMQ Client)。对于 Java 开发者而言,集成难度低,文档资源丰富。
对比其他中间件的局限性
中间件 局限性
Kafka

  1. 主要优化顺序读写性能,随机消费延迟高(约 10ms)
  2. 不适合小规模消息场景
  3. 依赖 ZooKeeper,部署复杂
    RocketMQ
  4. 学习曲线陡峭(需理解 NameServer、Broker 等概念)
  5. 跨语言支持弱(主要 Java)
  6. 社区活跃度低于 RabbitMQ
    ActiveMQ
  7. 性能瓶颈明显(吞吐量约 1k TPS)
  8. 社区维护缓慢,安全漏洞修复不及时

总结:为何选 RabbitMQ?
考试交卷场景的核心诉求是高可靠性、强顺序性、中等吞吐量、低延迟,而 RabbitMQ 通过以下优势完美匹配这些需求:

可靠性机制:生产者确认 + 持久化 + 手动 ACK,确保消息 “至少一次” 传递。
简单架构:单 Broker 即可满足需求,镜像集群提供高可用,无需额外组件。
丰富插件:支持死信队列、优先级队列等,应对复杂业务场景。
Java 友好:官方提供完善的 Spring AMQP 集成,降低开发成本。

若考试系统未来需要处理海量并发(如百万级考生同时交卷),则可考虑 Kafka 或 RocketMQ;但对于大多数教育机构的考试系统,RabbitMQ 已足够高效且稳定。

Linux安装

下载

官网下载地址: https://www.rabbitmq.com/download.html
也可以直接网盘下载我用的这个版本:https://pan.quark.cn/s/bce908e731b9
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
放服务器上

安装

yum install -y rabbitmq-server-4.1.0-1.el8.noarch.rpm
在这里插入图片描述
报错:

 erlang >= 26.0  已安装: erlang-R16B-03.18.el7.x86_64 (@epel)
              erlang = R16B-03.18.el7

版本对比:https://www.rabbitmq.com/docs/which-erlang#supported-version-policy
在这里插入图片描述

卸载 erlang

yum -y remove erlang-*

官方下载:https://www.erlang-solutions.com/downloads-2/#
网盘下载:https://pan.quark.cn/s/81f985cae4b3
在这里插入图片描述
新版本在下面
在这里插入图片描述
下载后上传服务器进行安装:yum install -y esl-erlang_27.3.3_1~centos~7_x86_64.rpm
安装完成后重新安装MQ:yum install -y rabbitmq-server-4.1.0-1.el8.noarch.rpm
在这里插入图片描述

拷贝配置文件

 cp /usr/share/doc/rabbitmq-server-4.1.0/rabbitmq.config.example   /usr/local/rabbitmq/

在这里插入图片描述
没找到配置文件
从官网下载一个:https://www.rabbitmq.com/docs/configure#config-items
在这里插入图片描述
配置文件下载地址可查看其各个参数配置,没啥用:https://github.com/rabbitmq/rabbitmq-server/blob/main/deps/rabbit/docs/rabbitmq.conf.example

/etc/rabbitmq 下配添加置文件 rabbitmq.config

[{rabbit, [{loopback_users, []}]}].

/etc/rabbitmq 下配添加置文件 rabbitmq-env.conf

NODENAME=rabbit@$(hostname)
RABBITMQ_LOG_BASE=/var/log/rabbitmq

在这里插入图片描述
配置文件记得赋权
在这里插入图片描述

启动rabbitmq中的插件管理

rabbitmq-plugins enable rabbitmq_management

在这里插入图片描述

启动

systemctl start rabbitmq-server

失败
在这里插入图片描述
我原先服务器有装过rabbitmq,残留数据冲突
清理:

sudo rm -rf /var/lib/rabbitmq/mnesia/*   
sudo rm -f  /var/lib/rabbitmq/.erlang.cookie

重启

systemctl restart rabbitmq-server

查看状态

systemctl status rabbitmq-server

在这里插入图片描述

自启动

systemctl enable rabbitmq-server

默认用户guest、密码guest 只能从localhost本机登录
需要重新创建账号进行登录

创建账号

rabbitmqctl add_user 账号  密码

在这里插入图片描述
赋权:

rabbitmqctl set_permissions -p "/" 账号 ".*" ".*" ".*"

在这里插入图片描述
执行命令为用户添加管理角色(以administrator最高权限为例):

角色权限范围适用场景
administrator完全控制(配置+监控+策略管理)系统管理员
monitoring查看所有资源+连接状态运维监控人员
policymaker管理策略(vhost范围内)开发负责人
management基础管理(自身vhost资源)普通开发者
rabbitmqctl set_user_tags 账号 administrator

访问

ip+端口 15672 进行登录
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值