RabbitMQ使用简述

RabbitMQ基于AMQP协议。

AMQP:是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现

RabbitMQ使用:Exchange(交换机)根据routing-key(路由选择键)匹配相应的queue(队列)

Exchange有4中类型:

direct:exchange在和queue进行binding时会设置routingkey,进行消息发送时,只有设置相同的routingkey,交换机才会路由到相应的队列。

topic:和direct差不多,只是topic允许routingkey使用通配符'*','#'.来匹配到相应的queue

fanout:直接将消息路由到所有绑定的队列中

header:和以上三个都不一样,其路由的规则是根据header来判断,其中的header就是以下方法的arguments参数

参考:https://www.cnblogs.com/julyluo/p/6265775.html,https://www.jianshu.com/p/d5675b1c8112

Routing Key:Consumer在binding exchange和queue时指定;在Producer在发送消息时指定。
 
 
使用目的:解耦,加快上文响应时间

使用场景:下单时关于库存的扣减、邮件、短信、消息的推送等需要异步处理的地方

扫描二维码关注公众号,回复: 3610907 查看本文章
如何使用的:
库存的扣减:
用户下单后,订单系统需要通知库存系统。传统的做法是,订单系统调用库存系统的接口。如下图:
 
传统模式的缺点:假如库存系统无法访问,则订单减库存将失败,从而导致订单失败,订单系统与库存系统耦合
应用消息队列后的方案:
 
订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功
库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作
假如:在下单时库存系统不能正常使用。也不影响正常下单,因为下单后,订单系统写入消息队列就不再关心其他的后续操作了。实现订单系统与库存系统的应用解耦
 
 
 
邮件、短信的发送:
串行方式:

 
并行方式(异步):
消息队列方式(解耦):

猜你喜欢

转载自www.cnblogs.com/wzk-0000/p/9809999.html