为了抱枕不择手段,RabbtiMQ怎么不算兔?

131 阅读3分钟

我正在参加「兔了个兔」创意投稿大赛,详情请看:「兔了个兔」创意投稿大赛

我今天刚写的kafka入门须知 - 掘金 (juejin.cn)看到了RabbitMQ想着rabbit怎么不算兔呢?多少沾点边吧。

基于我朴素的道德底线,我决定这一篇就不让ChatGPT来帮我水什么谐音梗,现代诗了。咱搞个正经的RabbtiMQ。先声明,我是个初学者,写文章更多的是为了记录,而不是输出。

rabbitMQ与kafka对比

一般来说在实际生产应用中,通常会使用kafka作为消息传输的数据管道,rabbitmq作为交易数据作为数据 传输管道,主要的取舍因素在于是否存在丢数据的可能。

rabbitmq在金融场景中经常使用,具有较高的严谨性,数据丢失的可能性更小,同时具备更高的实时性;而kafka优势主要体现在吞吐量上,虽然可以通过策略实现数据不丢失,但从严谨性角度来讲,大不如rabbitmq。而且由于kafka保证每条消息最少送达一次,有较小的概率会出现数据重复发送的情况;

总结RabbitMQ:用于实时的,对可靠性要求较高的消息传递上。
kafka:用于处于活跃的流式数据,大数据量的数据处理上。

消息队列模型

一般来说啊,所有的消息队列(MQ)产品从模型上都是一样的过程.消费者(consumer)订阅某个队列。生产者(producer)创建消息,然后发布到队列(queue)中,最后将消息发送到监听的消费者。

image.png

RabbitMQ 工作原理

RabbitMQ是一个消息代理和队列管理系统,它实现了高级消息队列协议(AMQP)。

  1. 生产者:将消息发布到一个或多个队列中。

  2. 队列:存储生产者发送的消息,直到消费者读取它们。

  3. 消费者:读取队列中的消息。

  4. 交换器:根据绑定规则,将生产者发布的消息路由到队列中。

  5. 绑定:将队列与交换器相关联,决定消息应该路由到哪个队列。

因此,RabbitMQ的工作流程是:生产者发布消息到交换器,交换器根据绑定将消息路由到队列,消费者从队列中读取消息。

看起来,RabbitMQ平平无奇,就是个简单的消息队列模型。但是RabbitMQ能够被广泛应用于业界不是没有原因的。

RabbitMQ相对于其他MQ的优势

  1. 支持多种消息协议:RabbitMQ支持多种消息协议,如AMQP、STOMP、MQTT等,满趈不同应用场景的需求。
  2. 支持高可用:RabbitMQ支持多集群部署,可以通过镜像队列、自动节点迁移等方式实现高可用。
  3. 支持分布式:RabbitMQ支持分布式部署,可以将生产者、消费者、队列分布在不同的节点上,提高系统的可扩展性。
  4. 支持消息确认:RabbitMQ支持消息确认机制,在消费者处理消息失败时可以重新投递消息,保证消息的可靠性。
  5. 支持消息持久化:RabbitMQ支持消息持久化,当RabbitMQ宕机后可以恢复数据。