当我们有一个更强大的Python网络框架Twisted时,为什么我们需要RabbitMQ?我试图理解使用RabbitMQ的原因。
你能否提供一个使用RabbitMQ的场景或示例呢?
此外,我在哪里可以找到有关如何使用RabbitMQ的教程?
当我们有一个更强大的Python网络框架Twisted时,为什么我们需要RabbitMQ?我试图理解使用RabbitMQ的原因。
你能否提供一个使用RabbitMQ的场景或示例呢?
此外,我在哪里可以找到有关如何使用RabbitMQ的教程?
让我告诉您一些使用MOM(消息导向中间件)的最佳选择原因:
它可以将应用程序的核心组件解耦/分离。这里不需要提及所有解耦架构的好处。我只想指出这是编写高质量和可维护软件的主要要求之一。
通过使用AMQP协议,连接两个完全不同的用不同语言编写的应用程序非常容易,这些应用程序将通过MOM“翻译器”相互交流。
通过使用MOM,我们可以水平扩展系统。一个消息生产者可以传输任务、命令或消息给无限数量的消息消费者进行处理,而对于扩展该系统,我们只需要创建新的消息消费者。假设我们每秒收到1000张图片并且必须调整其大小,使用传统方法解决此问题可能会很麻烦。通过MOM,我们可以将图像传输到消息消费者,他们可以异步地完成工作,并确保数据完整性。
还有其他使用MOM的好处,但在我看来,这3个是最重要的。
Twisted不是队列实现。除此之外,RabbitMQ提供了企业级别的排队功能并实现了AMQP协议,在企业世界中经常需要使用。
Twisted是一个网络库,实现了多种网络协议,并允许你创建自己的协议。其中之一可以使用Twisted的协议是AMQP https://launchpad.net/txamqp
RabbitMQ是一个AMQP代理,即在应用程序之外运行的服务,可能在单独的服务器群集上运行。AMQP仅是与消息队列代理(如RabbitMQ)通信所使用的协议。通过RabbitMQ,您可以获得很多好处。您可以发送具有保证传递的持久化消息,即使您的应用程序崩溃,甚至如果RabbitMQ代理重新启动也能抵达。如果在相同队列上有多个消费者,则可以获得消息消费者之间的负载平衡。只要为消息主体使用合理开放的序列化格式,您就可以与其他语言的应用程序进行互操作。AMQP允许将单片应用程序分解为许多松散耦合的部分,这对于长期维护应用程序是一个重大优势。
RabbitMQ使用像AMQP这样的消息队列技术,有助于保持干净和低延迟。
而使用RabbitMQ的最佳场景是用于后台处理需要更长时间才能处理且无法通过HTTP提供服务的数据。例如,如果您想从Web应用程序中下载报告。并且该报告生成需要15-20分钟才能处理完毕并下载。那么在这种情况下,您应该将下载请求推送到RabbitMQ队列,然后您应该期望通过电子邮件或通知向您交付该报告。
要了解RabbitMQ的工作原理或如何解决此类用例,您可以查看这个YouTube视频 - https://youtu.be/vvxvlF6CJkg 和 https://youtu.be/0dXwJa7veI8