RabbitMQ

74 阅读3分钟

RabbitMQ ,是异步调用中消息broker角色实现的一种方式,其中15672是RabbitMQ提供的管理控制台的端口,5672是RabbitMQ的消息发送处理接口. 12.png

1.RabbitMQ架构图

5.png 相关概念:

  1. 消息Broker:管理、暂存、转发消息,可以把它理解成微信服务器,这里是RabbitMO平台
  2. user:指RabbitMQ的管理或运维人员,不同的user可以负责不同的虚拟主机和权限
  3. VirtualHost:虚拟主机,具备隔离效果的一个空间,包含交换机和队列
  4. exchange:交换机,用来根据指定规则进行消息的路由具体的队列
  5. queue:队列,具备存储消息的容器
  6. Publisher:消息生产者,用来生产与发送消息的角色,通过代码实现
  7. Consumer:消息消费者,用来消费消息的角色,通过代码实现

实现流程:

  1. 在平台或通过代码注册相关虚拟主机 交换机 队列等
  2. publisher和consumer登录rabbitMQ平台
spring:
  rabbitmq:
    host: 192.168.138.100
    port: 5672
    virtual-host: /hmall
    username: joruia
    password: 123321

3. publisher和consumer使用SpringbootAMQP中RabbitTemplate或者amqpTemplate的convertandsend方法,和@RabbitListener发送和监听消息

<!--AMQP依赖,包含RabbitMQ-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

2.RabbitMQ的五种模式及其能够达到的效果

1.简单模式

6.png

是最基础的消息传递模式。生产者发送消息到队列,消费者从队列中接收消息。每个消息只会被一个消费者消费。适用于简单的任务分配场景,如后台任务处理。

2.工作队列模式

7.png

也称为轮询(Round-robin)调度模式。多个消费者监听同一个队列,消息会轮番地被分发给不同的消费者。可以实现负载均衡,提高处理速度,特别适合于需要多个工作进程并行处理的任务

3.订阅发布模式

8.png

生产者将消息发送到交换机(Exchange),而不是直接发送到队列。交换机会将消息复制并发送给所有绑定到该交换机的队列。允许多个消费者同时接收到相同的消息,适用于广播消息或事件通知等场景。

4.路由模式

9.png

生产者将消息发送到带有特定路由键的交换机,交换机根据路由键将消息转发给符合条件的队列。通过设置不同的路由规则,可以灵活地控制消息的流向,适用于需要根据消息内容或类型进行不同处理的场景

5.主题模式

10.png

一种基于模式匹配的发布/订阅模式。消息发送时携带一个主题(Topic),队列可以绑定到特定的主题模式上。消费者可以根据通配符来订阅感兴趣的消息。提供了更细粒度的订阅机制,使得消息过滤更加灵活,适用于复杂的消息路由需求。

3.代码实现交换机和队列的注册