为什么我们需要使用rabbitmq

fea*_*rix 53 python django twisted rabbitmq

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

你能提供一个使用RabbitMQ的场景或例子吗?

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

hse*_*rge 31

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

解耦:

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

灵活性:

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

可扩展性:

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

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


小智 13

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

  • 并没有真正回答这个问题。 (4认同)

Mic*_*lon 10

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

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


小智 5

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

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


Moh*_*ati 2

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

另外,我还曾与 Twisted 合作过。他们有区别

有关AMQP的更多信息,请参阅此处:http ://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol