RabbitMQ 基于交换机(Exchange)、队列(Queue)、和绑定的模式设计,核心的工作模型的话,有简单模式,就是说一个生产者直接发送消息到队列、一个消费者从队列接受消息,适用于一对一的简单通信
然后工作队列模式 多个消费者共享一个队列,消息被轮流分配给不同消费者(默认轮询),用于任务分发和负载均衡,然后就是发布/订阅模式(PUblish/Subscribe)生产者通过交换机(Fanout类型)将消息广播到所有绑定的队列,每个队列对应一个消费者,实现消息多副本分发(如日志多终端同步)。
路由模式:交换机(Direct 类型)根据消息的 routing key 与队列的绑定键精确匹配,将消息发送到指定队列,支持按规则定向传递。
主题模式:交换机(Topic 类型)通过通配符(* 匹配单个单词,# 匹配多个单词)模糊匹配 routing key,实现更灵活的路由规则(如按用户角色、地区过滤消息)。
模式有常见的五种:
- 简单队列模式:一个生产者,一个消费者,一个消息被一个消费者接收;
- 工作队列模式:一个生产者,生产一个消息到一个队列中,多个消费者同时监听这个队列;消息被竞争消费。(默认平均,可配置为 能者多得)
- 交换机模式
- Fanout 广播模式:每个绑定到该类交换机的队列都能接收到消息,实现广播的效果
- Direct 定向模式:每个绑定到交换机的队列,还有一个路由key;发送的key与绑定同类key的队列才能接收到消息
- Topic 主题模式:每个绑定到交换机的队列,还有一个路由key;发送的key与绑定同类key的队列才能接收到消息;这个key可以使用通配符;*表示一个字符,#表示多个