赞
踩
RabbitMQ 的消息分发分为五种模式:分别是简单模式、工作队列模式、发布订阅模式、路由模式、主题模式。
Work queues,工作队列模式。简单来说就是让多个消费者绑定到一个队列,共同消费队列中的消息。
当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,无法及时处理。
此时就可以使用 work 模型,多个消费者共同处理消息处理,消息处理的速度就能大大提高了。
在 Fanout 模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到 Direct 类型的 Exchange。
在 Direct 模型下:
RoutingKey
(路由 key)RoutingKey
。Routing Key
进行判断,只有队列的 Routingkey
与消息的 Routing key
完全一致,才会接收到消息Topic
类型的 Exchange
与 Direct
相比,都是可以根据 RoutingKey
把消息路由到不同的队列。
只不过 Topic
类型 Exchange
可以让队列在绑定 BindingKey
的时候使用通配符!
图示:
假如此时 publisher 发送的消息使用的 RoutingKey
共有四种:
china.news
代表有中国的新闻消息;china.weather
代表中国的天气消息;japan.news
则代表日本新闻japan.weather
代表日本的天气消息;topic.queue1
:绑定的是 china.#
,凡是以 china.
开头的 routing key
都会被匹配到,包括:
china.news
china.weather
topic.queue2
:绑定的是 #.news
,凡是以 .news
结尾的 routing key
都会被匹配。包括:
china.news
japan.news
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。