rabbitmq 默认端口5672 页面管理默认端口15672
几个概念 交换机exchange 路由 route_key 队列 queue
一个队列对应一个路由
一个交换机可以对应多个队列
当一个消息由交换机发出的时候,到底要到达哪个队列,需要路由去指引
有了上面的基础认知,那么再来看下springboot项目中,集成rabbitmq的普遍做法
1 给交换机命名,注入spring中,一般一种类型的交换机,有一个就够用了,因为它可以对应多个队列,实现不同的消息传达
2 给队列命名,注入spring中,一般注入队列是多个的,也就是要注入好几个队列
3 将注入的交换机和队列绑定,而绑定的必要条件,就是两者用路由作为绑定关系,一般来说,不同的队列对应不同的路由,对应同一个交换机
至此,就实现了,同一个交换机对应多个路由的配置
比如: 有exchange route_key1 route_key2 queue1 queue2
我现在绑定 exchange route_key1 queue1
再绑定一个 exchange route_key2 queue2
如此绑定后,当我发送消息时候,指定交换机名称和路由就可以知道,它将由哪个队列去接收
比如 exchange route_key1 那么最终 queue1会接受到我发送的消息 queue2 则收不到消息
topic模式
# 匹配多个
*匹配一个
“#” : 匹配一个或者多个
“*”:匹配一个
lazy.#可以匹配到key=lazy.a或者key=lazy.a.b
写消息的时候,声明交换机 exchange 声明一个路由key : routekey.key1
接收的时候声明一个队列 queue1 绑定key: routekey.# 指定交换机: exchange
接收的时候声明一个队列 queue2 绑定key: routekey.# 指定交换机: exchange
这样队列 1 2 都可以接收到消息