rabbitmq消息队列介绍

如题所述

第1个回答  2022-07-21
rabbitmq是建立在AMQP上的企业消息系统。
以生产者消费者为模型而存在的一个消息队列.

1、解耦
这是一个天然的解耦,实现了应用程序不再通过接口,你只需要调用消息队列的接口把结果存放在消息队列即可。
2、异步
一个同步的程序执行,通过消息队列,即可实现异步操作,而不必等待结果返回。在应对一些大并发中,起着很重要的作用.

如下图

这里就只有一个队列而已,生产者生产消费,放入到队列中,消费者进行消息消费。

这个能实现多个消费者之间进行消费的公平分发,消息者们可以通过自身的负载进行设置分发频率,比如。a消费者因为一些机器配置等的问题,导致消息没有被立即消费掉,堆积了很多消息,消费者就可以通过设置告诉rabbitmq控制分发频率,别一直发了。这其实就是类似能者多劳的意思。

如下图所示

上面的几种类型,都是消息只能发送到指定的queue中,但是想要类似广播的效果,发给所有消费者,或者像组播的形式,发送给某些特定的消费者。这时候就需要用到exchange了。

1、fanout 所有bind到此exchange的queue都可以接收消息
2、direct: 通过routingKey和exchange决定的那个唯一的queue可以接收消息
3、topic:所有符合routingKey(此时可以是一个表达式)的routingKey所bind的queue可以接收消息
表达式符号说明:

4、headers: 通过headers 来决定把消息发给哪些queue

如下图所示

这其实就是direct组播模式,设置好exchange交换机的类型,转发的时候,会检查队列中的routingkey值,如果和消息的关键字相同则转发,否则丢弃

这是topic模式,这个其实和上面一个转发有点类似,但是这个支持模糊匹配,
相似回答