优秀的编程知识分享平台

网站首页 > 技术文章 正文

rabbitmq原来还有这三大模式!你可能一直只用了错误的模式

nanyue 2024-09-01 20:39:00 技术文章 7 ℃

一、直接模式(Direct)

任何发送到Direct Exchange的消息都会被转发到RouteKey中指定的Queue。

1.一般情况可以使用rabbitMQ自带的Exchange:”"(该Exchange的名字为空字符串,下

文称其为default Exchange)。

2.这种模式下不需要将Exchange进行任何绑定(binding)操作

3.消息传递时需要一个“RouteKey”,可以简单的理解为要发送到的队列名字。

4.如果vhost中不存在RouteKey中指定的队列名,则该消息会被抛弃。

二、分裂模式

任何发送到Fanout Exchange的消息都会被转发到与该Exchange绑定(Binding)的所有

Queue上。

1.可以理解为路由表的模式

2.这种模式不需要RouteKey

3.这种模式需要提前将Exchange与Queue进行绑定,一个Exchange可以绑定多个

Queue,一个Queue可以同多个Exchange进行绑定。

4.如果接受到消息的Exchange没有与任何Queue绑定,则消息会被抛弃。

三、主体模式

任何发送到Topic Exchange的消息都会被转发到所有关心RouteKey中指定话题的

Queue上

1.这种模式较为复杂,简单来说,就是每个队列都有其关心的主题,所有的消息都带有一

个“标题”(RouteKey),Exchange会将消息转发到所有关注主题能与RouteKey模糊匹配的

队列。

2.这种模式需要RouteKey,也许要提前绑定Exchange与Queue。

3.在进行绑定时,要提供一个该队列关心的主题,如“#.log.#”表示该队列关心所有涉及

log的消息(一个RouteKey为”MQ.log.error”的消息会被转发到该队列)。

4.“#”表示0个或若干个关键字,“”表示一个关键字。如“log.”能与“log.warn”匹配,无法

与“log.warn.timeout”匹配;但是“log.#”能与上述两者匹配。

5.同样,如果Exchange没有发现能够与RouteKey匹配的Queue,则会抛弃此消息

四、安装rabbitmq在windows

1.下载并安装Eralng环境(由于rabbitmq是用Eralng开发的)

2.下载安装rabbitmq

3.安装管理插件(安装后用命令行切换至安装目录下输入命令rabbitmq_plugin enable

rabbitmq_management启动)

4.重启服务

5.打开浏览器输入地址入http://127.0.0.1:15672 来到登录页

五.新建springboot项目测试三种模式

1.直接模式测试

2.分裂模式测试

3.主题模式

经过测试得知我们在运用rabbitmq 时需要根据业务场景运用。每种模式都有应用不同的场景。你还只是运用直接模式吗?

Tags:

最近发表
标签列表