作者:丘圆圆611 | 来源:互联网 | 2023-09-25 19:16
RabbitMQ消息队列
发送消息流程:
1, 获取Conection
2, 获取Channel
3, 定义Exchange,Queue
4, 使用一个RoutingKey将Queue Binding到一个Exchange上
5, 通过指定一个Exchange和一个RoutingKey来将消息发送到对应的Queue上,
6, 接收方在接收时也是获取connection,接着获取channel,然后指定一个Queue直接到它关心的Queue上取消息,它对Exchange,RoutingKey及如何binding都不关心,到对应的Queue上去取消息就OK了(这个是重点,接收方,只关心queue的名字即可,其他的都不关心!!!!!)
换句话说:
发送放关心:ExchangName, QueueName,BindingKey
接收方关心:QuueuName
Exchange
在RabbitMQ
中有三种常用的转发方式,分别是:
DirectExchange
:路由键方式转发消息。
FanoutExchange
:广播方式转发消息。
TopicExchange
:主题匹配方式转发消息
- Direct: 先策略匹配到对应绑定的队列后 才会被投送到该队列 交换机跟队列必须是精确的对应关系 这种最为简单
- Topic: 转发消息主要是根据通配符。 在这种交换机下,队列和交换机的绑定会定义一种路由模式,那么,通配符就要在这种路由模式和路由键之间匹配后交换机才能转发消息 这种可以认为是Direct 的灵活版
- Headers:也是根据规则匹配, 相较于 direct 和 topic 固定地使用 routingkey , headers 则是一个自定义匹配规则的类型
在队列与交换器绑定时 会设定一组键值对规则 消息中也包括一组键值对( headers 属性) 当这些键值对有一对 或全部匹配时 消息被投送到对应队列 - Fanout : 消息广播模式 不管路由键或者是路由模式 会把消息发给绑定给它的全部队列 如果配置了routingkey会被忽略
Direct Exchange
Direct Exchange是RabbitMQ默认的交换机模式,也是最简单的模式,根据key全文匹配去寻找队列
四个概念非常重要: 虚拟主机(virtual host),交换机(exchange),队列(queue)和绑定(binding)
- 交换器(Exchange),它是发送消息的实体。
- 队列(Queue),这是接收消息的实体。
- 绑定器(Bind),将交换器和队列连接起来,并且封装消息的路由信息。
Exchange指向Queue的黑色线—RoutingKey,可以将它简单的理解为一条连接Exchange和Queue的路线
Exchange和Queue都需要通过channel来进行定义,而RoutingKey则只需要在binding时取个名字就行了。