Fork me on GitHub

中间件学习 - Rabbit MQ 概念及特殊MQ实现

Rabbit MQ

官方文档

介绍

Rabbit MQ是一个消息队列组件,使用Erlang开发,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题

安装使用

  1. 安装Erlang (RabbitMQ基于Erlang开发) Downloads - Erlang/OTP
  2. 配置Erlang环境
  3. erl -version 验证
  4. 安装rabbitMQDownloading and Installing RabbitMQ — RabbitMQ
  5. 进去rabbitMQ安装目录的sbin目录里面
  6. 输入rabbitmq-plugins enable rabbitmq_management命令安装管理页面的插件
  7. 启动rabbitmq-server.bat
  8. 进入管理页面http://localhost:15672 ,账号密码默认是:guest/guest

组件名称

  • exchange(交换机):按照一定的规则将消息路由转发到队列,并且可以对消息进行过滤,交换机不存储数据。
  • queue(队列):存储消息,消息到达后转发到消费者。

RabbitMQ 的工作模式

  1. 简单队列模式(Simple Queue)
  2. 工作队列模式(Work Queues)
  3. 发布订阅模式(Publish/Subscribe)
  4. 路由模式(Routing)
  5. 主题模式(Topic)

简单队列模式

最简单的队列模式,一个生产者一个消费者,主要用于处理异步任务

工作队列模式

一个生产者生产数据往队列里放,会有多个消费者消费队列里面的数据,消息不会被重复消费

借大佬图片用一下🦌

在消息过多,想增加执行效率的时候使用

订阅发布模式

生产者将消息发给交换机,每个消费者绑定一个队列,交换机会将消息转发到每一个绑定的队列里面去,每个队列都会收到这个消息,每个消费者都会消费到这条消息,即消息会被重复消费。

借大佬图片用一下🦌

路由模式

路由模式是一种特殊的发布订阅模式,交换机可以根据不同的规则将消息路由到不同的队列中保存

可以用来做日志级别的区分处理

topic 通配符模式

跟路由模式差不多,只不过路由方式可以换成通配符

死信队列

死信队列是用来接收过期消息,接收被拒绝的消息

拒绝的消息:

  • 消息超长
  • 消息过期

延迟队列

延迟队列可以延迟消费消息

实现方式:

  1. 设置消息过期时间
  2. 消息过期通过死信状态机将消息放入死信队列
  3. 死信队列通过状态机将消息发送到正常的队列里面消费

posted @ 2023-08-24 15:30  Banana_Fish  阅读(14)  评论(0编辑  收藏  举报