RubbitMq

182 阅读3分钟

www.bilibili.com/video/BV1Ap… 队列:先进先出,后进后出
发送者只管发送,接收者只管接收
有集群,才会高可用 RabbitMQ支持MQTT kafuka效率高但是不安全
RabbitMQ机制 Direct交换机,RbbitMQ的交换机会根据消息中的Routingkey的内容精准匹配,将消息发送给与Routingkey完全一致队里中,队列向需要指定好bindingkey,bindkey必须与消息中的Routingkey完全一致,消费者只需要监听某个队列以后就会获取队列中的信息的消息。
队列绑定,通过消息idroutingkey-bindingkey一一对应进行精准获取绑定 单播模式

image.png

image.png

image.png
fanout交换机,广播模式,消息是一对多,这种模式没有RoutingKey,Bindingkey的概念,Binding只是简单的将消息与交换机进行了绑定,如果消息进入了交换机中,那么这个消息会被转发到所有与当前交换机进行绑定的所有队列中,但是这种模式就和我们收看电视直播或者电台直播一样,必须在消费中监听队列,就像我们一定要在节目开始前先打开电视跳到对应的频道,否则如果消息先发送了那么消费者将永远错过这个消息,就像错过了电视节目一样
适用场景:适合使用在一些消息数据不是很重要的应用中,用户接收到或接受不到都无所谓的场景,例如手机APP的消息推送 虽然会丢失数据,但是速度快 image.png
topic交换机,交换机通过模式匹配分配消息的路由键属性,将路由键和模式进行匹配,此时队列需要绑定一个模式,他讲路由键和绑定键的字符串切分成单词,这些单词之间用点隔开,他同样也会识别两个通配符,符号“#”和符号“* ”。#匹 配 0个或多个单词,“ * ” 匹配不多不少一个单词
第一次匹配aa,三个队列的bingkey都可以匹配到所以三个消费者都会接收 image.png\

第二次,规则是aa.bb,队列1bindkey是aa,所以后面的.bb无法对应,所以交换机与队列不能绑定,消费者1无法监听,* 代表匹配到一个单词,而bb为一个单词所以匹配规则刚好匹配,队列二可以接收并和交换机进行绑定。消费者二可以监听到队列内的消息,#代表匹配一个或多个单词,所以队列三可以接收并和交换机进行绑定消费者三可以监听到队列内的消息

image.png
第三次,规则是aa.bb.cc,只有#匹配规则满足,0个或者多个单词匹配所以只有队列3可以匹配,队列三可以接收并和交换机进行绑定消费者三可以监听到队列内的消息

image.png
第四次,匹配规则是bb.aa.bb,这个三种队列都匹配不到所以任何消息都无法传递

image.png