RabbitMQ消息模型

网友投稿 747 2022-05-30

Rabbit MQ作为按照AMQP协议实现的老牌消息中间件,已经有将近十年的历史了。诞生于金融行业,现在作为企业级消息队列广泛用在各个领域。最近因为工作关系接触到了Rabbitmq,对其工作方式做了大致了解。

生产者将消息发送到mq之后,会首先经过exchange,由exchange决定如何将消息路由到对应的队列。路由方式有以下4种。

fanout 也即广播模式,exchange收到消息后将会把消息投递到每个和它绑定的队列

direct 消息按照指定的routing key(queue和exchange绑定时可指定)直接投递到到队列

topic 复杂的发布/订阅模式。routing key由.号分隔的字符串指定,如quick.orange.rabbit,每个分隔的字符串最好能对应一定的业务含义。支持模糊匹配,如*.orange.rabbit或如quick.orange.#。*精确匹配一个字符串,#匹配0个或多个字符串。

headers 按照消息头投递到队列,不考虑routing key

消息者收到消息之后,会按照默认开启的手动确认模式向MQ投递ack消息,代表消费者已经成功处理了这条消息,MQ可以将这条消息从队列中删除。没有收到确认的消息仍会存在于队列中,等待下次继续投递。

当一个队列有多个消费者订阅时,MQ默认逐个分发给每个消费者,而不管其处理的任务复杂度,若要做到消息的公平派发,需要消费者指定prefetch_count=1,告诉MQ在处理完当前消息之前不要派发下条消息过来。

更多的细节可以参考Rabbitmq的官方文档

RabbitMQ消息模型

本文转载自异步社区

架构设计

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Cocos Creator游戏开发实战》 ——1.1.2 Cocos Creator的组成
下一篇:开源项目的盈利模式是怎么样的?
相关文章