为什么我们需要使用rabbitmq

时间:2011-02-27 10:26:44

标签: python django twisted rabbitmq

当我们在Python中使用名为Twisted的更强大的网络框架时,为什么我们需要RabbitMQ。我试图理解为什么有人想要使用RabbitMQ。

请您使用RabbitMQ提供方案或示例?

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

7 个答案:

答案 0 :(得分:29)

让我告诉你一些使MOM(面向消息的中间件)可能是最佳选择的原因。

解耦:

它可以解耦/分离应用程序的核心组件。没有必要在这里带来解耦架构的所有好处。我只想指出这是编写高质量和可维护软件的主要要求之一。

灵活性:

使用AMQP协议实际上很容易将两种完全不同的应用程序连接在一起。这些应用程序将在MOM的“翻译者”的帮助下相互交谈。

可扩展性:

通过使用MOM,我们可以水平扩展系统。一个消息生产者可以向无限数量的消息消费者发送用于处理和扩展该系统的任务,命令或消息,我们需要做的只是创建新的消息消费者。让我们说我们每秒收到1000张图片,我们必须调整它们的大小。用传统方法解决这个问题可能会令人头疼。使用MOM,我们可以将图像传输给消息使用者,消费者可以异步地完成工作并确保数据的完整性。

它们也是使用MOM的其他好处,但在我看来这3个是最重要的。

答案 1 :(得分:13)

Twisted不是队列实现。除此之外,RabbitMQ还提供企业级排队功能,并实现了企业界经常需要的AMQP协议。

答案 2 :(得分:9)

Twisted是一个网络库,它实现了许多网络协议,并允许您创建自己的网络协议。可以与Twisted一起使用的协议之一是AMQP https://launchpad.net/txamqp

RabbitMQ是一个AMQP代理,即在您的应用程序之外运行的服务,可能位于单独的服务器群集上。 AMQP仅仅是用于与RabbitMQ之类的消息队列代理进行通信的协议。你从RabbitMQ那里得到了很多东西。您可以持续保证发送消息,即使您的应用程序崩溃,它们也会到达,即使RabbitMQ代理最终重新启动也是如此。如果同一队列中有多个使用者,则可以在消息使用者之间实现负载平衡。只要您为邮件正文使用合理开放的序列化格式,您就可以与其他语言的应用程序进行互操作。 AMQP允许您将单个应用程序分解为可以在不同服务器上运行的许多松散耦合的部分。这对于应用程序的长期维护来说是一个巨大的胜利。

答案 3 :(得分:5)

rabbitmq不仅仅是消息传递......它是一个能够互连应用程序的通用平台。使用rabbitmq,java应用程序可以与Linux服务器和/或.net应用程序对话,与ruby& rails +几乎任何在企业Web开发中占据一席之地的东西。最重要的是,它实现了AMQP提出的“即发即忘”模型。它只是JMS或ESB的完美替代品。特别是如果您正在处理跨平台架构,并保证可靠性。甚至还有一个称为RPC(远程过程调用)的特殊功能,它增加了分布式arch中的开发简易性。

除了所有这些,在世界金融服务,如股票交易所或股票市场,需要大量可靠和有效的路由(假设您不知道实际没有人订阅您的服务,但希望确保谁曾这样做,接收你的ping是否在这一刻连接,或者将在以后连接),rabbitmq规则,因为它基于ERLANG&开放式电信平台,在使用最少资源的同时确保高性能。有关rabbitmq最方便的介绍,请参阅rabbitmq.com/getstarted.html以获取本机开发语言。

答案 4 :(得分:4)

RabbitMQ是AMQP的一个实现,它定义了面向消息的中间件的可互操作协议。因此,它定义了可以在任何平台上实现的消息创建,发布,路由和消费的语义。

从概念上讲,它可以被视为Twisted等网络引擎的专业化,但基于行业认可的标准。

以下是来自Ross Mason的博客,该博客讨论了与AMQP互操作的发布 - 订阅的兴趣:http://blogs.mulesoft.org/inter-operable-publishsubscribe-with-amqp/

答案 5 :(得分:2)

我使用RabbitMQ作为Celery的消息代理。

另外,我和Twisted合作过。它是不同的

有关 AMQP http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol

的详情,请参阅此处

答案 6 :(得分:0)

RabbitMQ使用AMQP之类的消息排队技术,该技术有助于保持事物干净和无延迟。

使用RabbitMQ的最佳方案是对数据进行后台处理,这可能需要更多时间来处理,并且无法通过HTTP提供服务。例如,如果要从Web应用程序下载报告。生成报告需要大约15-20分钟的时间来处理和下载。然后,在这种情况下,您应该将下载请求推送到RabbitMQ队列中,然后期望该报告将通过电子邮件或通知发送给您。

要确切了解RabbitMQ的工作原理或如何解决此类用例,请查看以下YouTube视频-https://youtu.be/vvxvlF6CJkghttps://youtu.be/0dXwJa7veI8