mq的优劣势
优势
1.应用解耦
2.异步提速
3.削峰填谷
劣势
1.可用性降低
2.复杂性提高
基本概念
channel 客户端连接rabbitmq服务端的对象
broker 一个rabbitmq服务器实例就叫一个broker
virutal host一个实例里面有多个virtual host,对应一个监听的路径
Exchange交换机 ,一个virtual中有一个exchange,用于消息分发
queue队列,消息实际存放的位置,exchange消息分发到对应queue,并且消费客户端也是通过channel从queue中取数据的
工作模式
1.hello world
一个生产者者对应一个queue对应一个consumer
2.work queue
一个生产者对应一个队列,多个consumer同时消费这个队列,每个consumer消费该不同的消息,不重复消费其他消费者已经消费的消息
3.publis/subscribe 发布订阅模式
主要是exchange接收到消息后会把订阅了该exchange的队列都发一份给这些队列,相当于广播了这些队列,也就是在代码中体现的exchange的类型为fanout广播类型, 在创建生产者时要指定exchange,然后创建消费者时要指定queue并绑定到exchange,即可完成对应关系.比如,现在生产者生产了hello world这条消息,并指定了广播类型的exchange名字是fanout,在创建消费者的时候创建了队列A,并绑定到fanout这个exchange交换机上,再创建一个消费者,创建了队列B,且也绑定到fanout这个exchange交换机上,那么,fanout这个exchange交换机就会将hello world这条消息分别塞进队列A和队列B 中。这就是发布订阅模式
4.Routing 路由模式
其实就是将exchang类型改为redirect模式,就是在生产者生产消息绑定exchange时指定一个routing key,并在创建消费者时创建队列绑定exchange时指定要监听的routing key,那么exchange就会将和监听绑定的queue指定的key一样的消息塞进对应的队列中。举个例子,比如生产者生产了指定routing Key为A的hello world消息,那么此时已经有一个消费者队列A监听该exchange,其监听的routing key为A,同时也有一个消费者队列B监听该exchagne,但是其routing key设置为B,那么exchange就只会将hello world这消息塞进队列A,不会塞队列B 了
5.Topic 主题模式
主要就是在路由模式的基础上增强了routing key通配符匹配功能 ,设想一下,如果每个routing key都要单独指定,那么当有多个routing key都是需要路由到同一个队列的时候,那么需要多次定义,引入了通配符模式后,我们就可以将有相似的key都直接用一个通配符就可以涵盖,方便快捷,也实现了灵活性. 通过*号匹配一个字符,#匹配一个或多个字符
消息确认机制
当生产者端向broker发送消息的时候,会通过消息确认机制来让生产者端知道broker的消息接收情况
分为
confirm和return
confirm主要是确认broker是否已经接收到,ack表示正常接收,nack是表示无法接收,可能是队列已满,而return是指退回,指的是在正常接收的情况下,exchange交换机发现无法路由到任何一个队列,也就是没有队列接收这一信息,于是退回.