RabbitMQ
RabbitMQ
基本对象
- producer
- channel
- 多个相互隔离
- exchange(交换机)
- Fanout
- Direct
- Headers
- Topic
- queue
- consumer
工作模式
-
work queues
-
graph LR p -->x -->q q -->c1 q -->c2
-
消息不会被重复消费
-
适用于消费速度慢,需要多个消费者
-
-
publish/subscribe
-
exchange为fanout 模式
-
graph LR p -->x x -->q1 -->c1 x -->q2 -->c2
-
一条消息会多个消费者同时消费
-
如:下完订单后,邮件通知用户同时短信通知用户
-
-
Routing
-
exchange为direct 模式
-
根据routing key发送到对应的queue,如果绑定了多个queue那么会都发送
-
routing key绑定在queue上
-
可取代【发布/订阅】模式(不同的queue上绑定同样的routing key),更强大
-
-
Topics(通配符)
-
exchange为Topic 模式
-
Routing的高级版本,Routing是等于,Topics是通配符(# or *)
-
#能匹配一个或多个(每个词中间以.分隔)
-
*只能匹配一个
-
如:下完订单后,有的想只接收短信,有的想只接收email,有的想全部接收
- routing key : inform.#.email.#
-
-
Header
- exchange为headers 模式
- 没有routing key,使用key/value
- 不常用
-
RPC
-
exchange为direct 模式
-
客户端远程调用服务端方法,使用MQ实现RPC的异步调用
-
graph LR p -->queue1 -->c c -->queue2 -->p
- client发送一条请求消息在队列中
- server处理好后,发送一条回复消息在另一个队列中
- client收到 即完成了异步调用
-
实现步骤
- 创建连接
- 创建channel
- 声明queue
- 声明exchange (设置类型)
- 绑定queue (设置routing key)
- 发布 Basic Publish(指定exchange、routing key、消息体)
- 订阅 Basic Consume (指定queue、绑定具体的consumer)

浙公网安备 33010602011771号