为什么我们需要使用RabbitMQ

73 投票
7 回答
22501 浏览
提问于 2025-04-16 12:37

为什么我们需要RabbitMQ,既然Python里有一个更强大的网络框架叫Twisted。我想搞明白为什么有人会想用RabbitMQ。

你能给我举个使用RabbitMQ的场景或例子吗?

另外,我在哪里可以找到关于如何使用RabbitMQ的教程呢?

7 个回答

13

Twisted是一个网络库,它实现了很多网络协议,还允许你自己创建协议。你可以用Twisted来使用的一种协议是AMQP,详细信息可以查看这个链接

RabbitMQ是一个AMQP代理,也就是一个在你应用程序外部运行的服务,可能是在一组独立的服务器上。AMQP只是用来和像RabbitMQ这样的消息队列代理进行通信的协议。使用RabbitMQ,你可以实现很多功能。比如,你可以确保消息的持久性和可靠送达,这样即使你的应用崩溃了,或者RabbitMQ代理重启了,消息也能送到。还有,如果你有多个消费者在同一个队列上,它可以帮助你进行负载均衡。只要你使用一种相对开放的消息格式,你的应用程序就能和其他语言编写的应用进行互操作。AMQP还允许你把一个大型的应用拆分成多个松散耦合的部分,这些部分可以在不同的服务器上运行。这对长期维护应用程序来说是个很大的好处。

14

Twisted 不是一个队列的实现。除此之外,RabbitMQ 提供了企业级的队列功能,并且实现了 AMQP 协议,这在企业环境中经常是需要的。

40

让我给你讲讲使用消息导向中间件(MOM)的一些原因,为什么它可能是最佳选择。

解耦:

它可以将应用程序的核心组件分开。这里不需要详细讲解解耦架构的所有好处,我只是想强调,这一点是编写高质量和易于维护的软件的主要要求之一。

灵活性:

通过使用AMQP协议,连接两个完全不同语言编写的应用程序其实非常简单。这些应用程序可以通过一个“翻译者”——也就是MOM,互相交流。

可扩展性:

使用MOM后,我们可以横向扩展系统。一个消息生产者可以向无限数量的消息消费者发送任务、命令或消息进行处理。要扩展这个系统,我们只需要创建新的消息消费者。比如说,我们每秒收到1000张图片,需要对它们进行缩放。用传统的方法来解决这个问题可能会很麻烦。而使用MOM,我们可以将图片发送给消息消费者,它们可以异步处理这些图片,并确保数据的完整性。

使用MOM还有其他好处,但我认为这三点是最重要的。

撰写回答