RabbitMQ ,是异步调用中消息broker角色实现的一种方式,其中15672是RabbitMQ提供的管理控制台的端口,5672是RabbitMQ的消息发送处理接口.
1.RabbitMQ架构图
相关概念:
- 消息Broker:管理、暂存、转发消息,可以把它理解成微信服务器,这里是RabbitMO平台
- user:指RabbitMQ的管理或运维人员,不同的user可以负责不同的虚拟主机和权限
- VirtualHost:虚拟主机,具备隔离效果的一个空间,包含交换机和队列
- exchange:交换机,用来根据指定规则进行消息的路由具体的队列
- queue:队列,具备存储消息的容器
- Publisher:消息生产者,用来生产与发送消息的角色,通过代码实现
- Consumer:消息消费者,用来消费消息的角色,通过代码实现
实现流程:
- 在平台或通过代码注册相关虚拟主机 交换机 队列等
- 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.简单模式
是最基础的消息传递模式。生产者发送消息到队列,消费者从队列中接收消息。每个消息只会被一个消费者消费。适用于简单的任务分配场景,如后台任务处理。
2.工作队列模式
也称为轮询(Round-robin)调度模式。多个消费者监听同一个队列,消息会轮番地被分发给不同的消费者。可以实现负载均衡,提高处理速度,特别适合于需要多个工作进程并行处理的任务
3.订阅发布模式
生产者将消息发送到交换机(Exchange),而不是直接发送到队列。交换机会将消息复制并发送给所有绑定到该交换机的队列。允许多个消费者同时接收到相同的消息,适用于广播消息或事件通知等场景。
4.路由模式
生产者将消息发送到带有特定路由键的交换机,交换机根据路由键将消息转发给符合条件的队列。通过设置不同的路由规则,可以灵活地控制消息的流向,适用于需要根据消息内容或类型进行不同处理的场景
5.主题模式
一种基于模式匹配的发布/订阅模式。消息发送时携带一个主题(Topic),队列可以绑定到特定的主题模式上。消费者可以根据通配符来订阅感兴趣的消息。提供了更细粒度的订阅机制,使得消息过滤更加灵活,适用于复杂的消息路由需求。