消息中间件的应用场景

今天基于rabbitMQ的学习聊一下他的应用场景:

1、work_queue 工作队列模式

例如我们有的时候有发送短信的的服务,同事要发送短信的时候比较多,那么一台服务吃不消,这样的话我们就可以使用这种模式来进行削峰填谷。如下图

消息中间件的应用场景

 

 p是生产者 这个端要发送消息的量特别大(加入要发送1000),并且发送消息不影响后边的业务执行,这时候我们就使用mq来削峰。

C1和C2是相同的服务,都为短信服务,他们两个单独的处理能力为五百,这样两个加起来就有一千的量了(mq出来1000的消息量绰绰有余),而且这种模式下C1消费后C2就不会重复消费。

2、pub/sub 发布订阅模式

参照下图:

消息中间件的应用场景

 

注意 此时红色为队列queue p是生产者 c是消费者  x是交换机

 

 使用场景:fanout 广播模式,当发送同一个消息时候c1和c2为不同的服务,分别要根据同一个消息做不同的处理,比如说c1是为了日志打印c2是为了日志保存到数据库。这个时候才用广播模式,起到应用解耦的作用。

3、routing模式 路由模式

消息中间件的应用场景

注意:routing模式下 交换机绑定队列时要指定routing key,消息被发送时会转发到对应的队列中 ,还有交换机的类型要是direct

使用场景:下单后要对这个库存进行修改,这时候可以为库存系统专门设置一个队列,然后设置一个key,注意这时候必须是下单成功。(看不明白就别较劲了,场景是我自己想的)

 4、topics通配符模式

消息中间件的应用场景

 

注意:其实当前模式可以实现发布订阅模式,假设所有队列绑定的都是*,那匹配时就类似于pub/sub模式了,实现routing模式,就是通配符写的不那么复杂就行,只是这种方式在设置routing key的时候更加的灵活

 使用场景:上述的皆可用(本人没有太多实战经验,键盘那选手,只是做下记录)

amqp是什么?高级消息 队列协议

AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

 

 

未完待续。。。。

上一篇:CentOS7 安装Beats的Filebeat收集日志插件


下一篇:RabbitMQ--Publish/Subscribe