什么是RabbitMq?

MQ(Message Queue,消息队列)是一种应用系统之间的通信方法。是通过读写出入队列的消息来通信的。
AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写。

工作模式:

简单模式和工作队列模式
由3个对象组成,消息生成者P、队列、消费者C。一条消息只能给一个消费者消费。
案例:发送短信、执行一次性任务。
发布/订阅模式
发布/订阅模式
每个消费者监听自己的队列;
由交换机将消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息;
使用fanout的模式。不处理路由键。只需要简单的将队列绑定到交换机上。
一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。
案例:发送多种通知,当用户充值成功后,需要发送多种通知,比如短信、邮件。	
路由模式
每个消费者监听自己的队列,并且设置routingkey。
生产者将消息发给交换机,由交换机根据routingkey来转发消息到指定的队列。
一个消息可以被多个消费者获取,并且消息的目标队列可被生产者指定。
使用direct模式。处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。
话题模式
每个消费者监听自己的队列,并且设置带统配符的routing key。
由交换机根据routing key来转发消息到指定的队列。
使用topic模式。将路由键和某模式进行匹配。符号 “#” 匹配一个或多个词,符号“*”匹配一个词。

好处:

1.解耦,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!
2.异步,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度
3.削峰,并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐