做详情页上什么网站找素材,医院网站建设运营方案,上海排名前十装修公司,小程序制作代码RabbitMQ是怎么做消息分发的#xff1f;
RabbitMQ 的消息分发分为五种模式#xff1a;分别是简单模式、工作队列模式、发布订阅模式、路由模式、主题模式。
1、简单模式 publisher 直接发送消息到队列消费者监听并处理队列中的消息 简单模式是最基本的工作模式#xff0c;…RabbitMQ是怎么做消息分发的
RabbitMQ 的消息分发分为五种模式分别是简单模式、工作队列模式、发布订阅模式、路由模式、主题模式。
1、简单模式 publisher 直接发送消息到队列消费者监听并处理队列中的消息 简单模式是最基本的工作模式也是最简单的消息传递模式。在简单模式中一个生产者将消息发送到一个队列中一个消费者从队列中获取并处理消息。这种模式适用于单个生产者和单个消费者的简单场景消息的处理是同步的。
2、工作队列模式 Work queues工作队列模式。简单来说就是让多个消费者绑定到一个队列共同消费队列中的消息。 当消息处理比较耗时的时候可能生产消息的速度会远远大于消息的消费速度。长此以往消息就会堆积越来越多无法及时处理。 此时就可以使用 work 模型多个消费者共同处理消息处理消息处理的速度就能大大提高了。
3、发布/订阅模式Fanout 交换机 1 可以有多个队列2 每个队列都要绑定到 Exchange交换机3 生产者发送的消息只能发送到交换机4 交换机把消息发送给绑定过的所有队列5 订阅队列的消费者都能拿到消息 也就相较于工作队列模式来讲工作队列中的一条消息只有一个消费者消费由多个消费者进行消费不会出现重复消费。 发布订阅模式的交换机会把一条消息分发到每个队列中然后由队列绑定的消费者消费也就是一条消息由所有的消费者消费
4、路由模式Direct 交换机
在 Fanout 模式中一条消息会被所有订阅的队列都消费。但是在某些场景下我们希望不同的消息被不同的队列消费。这时就要用到 Direct 类型的 Exchange。 在 Direct 模型下
队列与交换机的绑定不能是任意绑定了而是要指定一个 RoutingKey路由 key消息的发送方在向 Exchange 发送消息时也必须指定消息的 RoutingKey。Exchange 不再把消息交给每一个绑定的队列而是根据消息的 Routing Key 进行判断只有队列的 Routingkey 与消息的 Routing key 完全一致才会接收到消息
5、主题模式Topic 交换机
Topic 类型的 Exchange 与 Direct 相比都是可以根据 RoutingKey 把消息路由到不同的队列。 只不过 Topic 类型 Exchange 可以让队列在绑定 BindingKey 的时候使用通配符 图示 假如此时 publisher 发送的消息使用的 RoutingKey 共有四种
china.news 代表有中国的新闻消息china.weather 代表中国的天气消息japan.news 则代表日本新闻japan.weather 代表日本的天气消息 解释topic.queue1绑定的是 china.# 凡是以 china. 开头的 routing key 都会被匹配到包括 china.newschina.weather topic.queue2绑定的是 #.news 凡是以 .news 结尾的 routing key 都会被匹配。包括: china.newsjapan.news