1-5种工作模式 请看图示
2-RabbitMQ安装和下载
下载安装:
https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.14
这里面还有很多其他版本,没必要花积分去下载
mall整合RabbitMQ实现延迟消息
本文主要讲解mall整合RabbitMQ实现延迟消息的过程,以发送延迟消息取消超时订单为例。
项目使用框架介绍
RabbitMQ
RabbitMQ是一个被广泛使用的开源消息队列。它是轻量级且易于部署的,它能支持多种消息协议。RabbitMQ可以部署在分布式和联合配置中,以满足高规模、高可用性的需求。
RabbitMQ的安装和使用
安装Erlang,下载地址:http://erlang.org/download/otp_win64_21.3.exe
配置环境变量
变量名:ERLANG_HOME
变量值就是刚才erlang的安装地址,点击确定。
然后双击系统变量path
点击“新建”,将:
%ERLANG_HOME%\bin
加入到path中。
安装RabbitMQ,下载地址:https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.7.14
最后windows键+R键,输入cmd,再输入erl,看到版本号就说明erlang安装成功了。
Linux 和window 都有 下拉到网页最下就行
安装完成后,进入RabbitMQ安装目录下的sbin目录
RabbitMQ安装好后接下来安装RabbitMQ-Plugins。进入RabbitMQ的sbin目录,打开命令行cmd,输入下面命令
rabbitmq-plugins enable rabbitmq_management
打开sbin目录,双击rabbitmq-server.bat
等几秒钟看到这个界面后,访问: http://localhost:15672
访问地址查看是否安装成功:http://localhost:15672/
6-输入账号密码并登录:guest guest
7-创建帐号并设置其角色为管理员:mall mall
8-创建一个新的虚拟host为:/mall
9-点击mall用户进入用户配置页面
10-给mall用户配置该虚拟host的权限
至此,RabbitMQ的安装和配置完成。
RabbitMQ的消息模型
标志 | 中文名 | 英文名 | 描述 |
---|---|---|---|
P | 生产者 | Producer | 消息的发送者,可以将消息发送到交换机 |
C | 消费者 | Consumer | 消息的接收者,从队列中获取消息进行消费 |
X | 交换机 | Exchange | 接收生产者发送的消息,并根据路由键发送给指定队列 |
Q | 队列 | Queue | 存储从交换机发来的消息 |
type | 交换机类型 | type | direct表示直接根据路由键(orange/black)发送消息 |
如果启动不了
1-卸载重装
卸载方法:
1、移除RabbitMQ服务
2、打开控制面板——>卸载 RabbitMQ Server——> 卸载 Erlang OTP
3、打开任务管理器,停止掉 进程epmd.exe
4、删除掉 Erlang 和RabbitMQ的所有安装目录
2-查看RBMQ的日志:
看一下是什么错误
常见错误一:
安装在了中文目录下
有一个因为电脑是中文目录,没配置环境变量 指定 日志文件存储目录 都是默认存储在c盘的用户文件夹上.已收录到BUG集中
MQ的分类:
MQ种类 | 单机吞吐量 | 优点 | 缺点 | 应用场景 |
---|---|---|---|---|
ActiveMQ | 万级 | 可用性高,基于主从架构实现高可用 | 消息可靠性较低的概率丢失数据 | |
RabbitMQ | 万级 | 1-是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一 2-性能较好,MQ功能比较完备,健壮,稳定,易用,跨平台,支持多种语言 如:Python,Ruby,NET,Java,JMS,C,PHP等 2-支持Ajax文档齐全,管理页面非常棒,社区活跃度高,更新频率相当高 | 商业版需要收费,学习成本较高 | 中小型公司,数据量没有这么大的 |
RockerMQ | 十万级 | 1-可用性非常高,分布式架构 2-数据0丢失,还支持十亿级别的消息堆积 3-java写的,阅读性好,可以定制自己公司的MQ | 1-支持的客户端语言不多 2-目前是java及c++,其中c++不成熟,社区活跃度一般,没有在MQ核心中去实现JMS等接口,有些系统要迁移需要修改大量代码 | 金融互联网,高并发 |
kafka | 百万级 | 1-性能卓越,吞吐量高 2-可用性非常高,少数机器宕机,不会丢失数据,不会导致不可用,消费者采用pull方式获取消息,消息有序3-有web管理界面 4-日志领域比较成熟 | 1-单机超过64个对列分区,Load会发生明显的飙高现象 队列越多,Load越高 2-发送消息响应时间变长,使用短轮询方式,实时性取决于轮询间隔时间 3-消息失败不支持重试,支持消息有序,但是一台代理宕机后,就会产生消息乱序,社区更新较慢 | 大型公司处理大量数据,日志采集功能 |
添加依赖
<!--rabbitmq依赖的客户端-->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.8.0</version>
</dependency>
<!--操作文件流的一个依赖-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>