RabbitMQ(二)——模式类型
RabbitMQ系列
RabbitMQ(二)——模式类型
上章 RabbitMQ(一)——简介 我们学习了RabbitMQ的一些简单知识,本章记录RabbitMQ各种模式的类型以及各自特点。
RabbitMQ工作模式:
简单模式:一个生产者,一个消费者。
工作队列模式:一个生产者,多个消费者,每个消费者获取到的消息唯一,默认轮询获取。
Exchange模式:
发布/订阅模式(Fanout):一个生产者发送的消息会被多个消费者获取。发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(binding)的所有的Queue上。这种模式不需要任何Routekey,需要提前将Exchange 与Queue进行绑定,一个Exchange可以绑定多个Queue,一个Queue可以和多个Exchange绑定。如果接收到消息的Exchange没有与任何Queue绑定,则消息会丢失。
路由模式(Direct):任何发送到Direct Exchange的消息都会被转发到RouteKey指定的Queue,这种模式下不需要将Exchange进行任何绑定(binding)操作,消息传递时需要一个RouteKey,可以简单的理解为要发送到的队列名字。如果vhost中不存在该队列名,消息会丢失。
匹配订阅模式(Topic):任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey指定主题的Queue中。就是每个队列都有其关心的主题,所有的消息都带有一个标题(RouteKey),Exchange会将消息转发到所有关注主题能与RouteKey模糊匹配队列。这种模式需要Routekey并且提前绑定Exchange与Queue。在进行绑定时要提供一个该队列对应的主题。‘ # ’表示0个或若干个关键字,‘ * ’表示一个关键字。如果Exchange没有发现能够与RouteKey匹配的Queue,消息会丢失。
headers:headers exchange主要通过发送的request message中的header进行匹配,其中匹配规则(x-match)又分为all和any,all代表必须所有的键值对匹配,any代表只要有一个键值对匹配即可。headers exchange的默认匹配规则(x-match)是any。
简单模式和工作队列模式
这两种模式非常简单,只涉及生产者、队列、消费者。
生产者负责生产消息,将消息发送到队列中,消费者监听队列,队列有消息就进行消费。
工作队列模式其实就是有多个消费者的简单模式。
当有多个消费者时,消费者平均消费队列中的消息。
发布/订阅、路由与主题模式
这三种模式就要用到Exchange了。 生产者不直接与队列交互,而是将消息发送到交换机中,再由交换机将消息发送到已绑定改交换机的队列中给消费者消费。
常用的交换机类型有 3 种:fanout、direct、topic。
fanout不处理路由键,很像子网广播,每台子网内的主机都获得了一份复制的消息。
发布/订阅模式就是指使用fanout交换模式。fanout 类型交换机转发消息是最快的。
direct模式处理路由键,需要路由键匹配才能转发。 路由模式使用的是 direct 类型的交换机。
topic:将路由键和某模式进行匹配。
主题模式使用的是 topic 类型的交换机。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现