中间件学习 - Rabbit MQ 概念及特殊MQ实现
Rabbit MQ
官方文档
介绍
Rabbit MQ是一个消息队列组件,使用Erlang开发,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题
安装使用
- 安装Erlang (RabbitMQ基于Erlang开发) Downloads - Erlang/OTP
- 配置Erlang环境
- erl -version 验证
- 安装rabbitMQDownloading and Installing RabbitMQ — RabbitMQ
- 进去rabbitMQ安装目录的sbin目录里面
- 输入
rabbitmq-plugins enable rabbitmq_management
命令安装管理页面的插件 - 启动rabbitmq-server.bat
- 进入管理页面http://localhost:15672 ,账号密码默认是:guest/guest
组件名称
- exchange(交换机):按照一定的规则将消息路由转发到队列,并且可以对消息进行过滤,交换机不存储数据。
- queue(队列):存储消息,消息到达后转发到消费者。
RabbitMQ 的工作模式
- 简单队列模式(Simple Queue)
- 工作队列模式(Work Queues)
- 发布订阅模式(Publish/Subscribe)
- 路由模式(Routing)
- 主题模式(Topic)
简单队列模式
最简单的队列模式,一个生产者一个消费者,主要用于处理异步任务
工作队列模式
一个生产者生产数据往队列里放,会有多个消费者消费队列里面的数据,消息不会被重复消费
借大佬图片用一下🦌
在消息过多,想增加执行效率的时候使用
订阅发布模式
生产者将消息发给交换机,每个消费者绑定一个队列,交换机会将消息转发到每一个绑定的队列里面去,每个队列都会收到这个消息,每个消费者都会消费到这条消息,即消息会被重复消费。
借大佬图片用一下🦌
路由模式
路由模式是一种特殊的发布订阅模式,交换机可以根据不同的规则将消息路由到不同的队列中保存
可以用来做日志级别的区分处理
topic 通配符模式
跟路由模式差不多,只不过路由方式可以换成通配符
死信队列
死信队列是用来接收过期消息,接收被拒绝的消息
拒绝的消息:
- 消息超长
- 消息过期
延迟队列
延迟队列可以延迟消费消息
实现方式:
- 设置消息过期时间
- 消息过期通过死信状态机将消息放入死信队列
- 死信队列通过状态机将消息发送到正常的队列里面消费