Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我们需要使用rabbitmq_Python_Django_Twisted_Rabbitmq - Fatal编程技术网

Python 为什么我们需要使用rabbitmq

Python 为什么我们需要使用rabbitmq,python,django,twisted,rabbitmq,Python,Django,Twisted,Rabbitmq,在Python中有一个更强大的名为Twisted的网络框架时,为什么我们需要RabbitMQ呢。我试图理解为什么有人想使用RabbitMQ 您能否提供一个使用RabbitMQ的场景或示例 另外,在哪里可以找到关于如何使用RabbitMQ的教程?我使用RabbitMQ作为的消息代理 此外,我还与Twisted合作过。这是不同的 有关AMQP的更多信息,请参见此处:Twisted不是队列实现。除此之外,RabbitMQ还提供了企业级排队功能,并实现了企业世界中经常需要的AMQP协议 RabbitMQ

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

您能否提供一个使用RabbitMQ的场景或示例


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

我使用RabbitMQ作为的消息代理

此外,我还与Twisted合作过。这是不同的


有关AMQP的更多信息,请参见此处:

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

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

从概念上讲,它可以被认为是Twisted这样的网络引擎的一种专门化,但它是基于行业公认的标准


下面是Ross Mason的一篇博客,讨论了与AMQP的互操作发布订阅的兴趣:

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

解耦: 它可以解耦/分离应用程序的核心组件。这里不需要带来解耦体系结构的所有好处。我只想指出,这是编写高质量且可维护的软件的主要要求之一

灵活性: 实际上,使用AMQP协议将两个用不同语言编写的完全不同的应用程序连接在一起非常容易。这些应用程序将通过“翻译人员”(即MOM)的帮助相互对话

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


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

Twisted是一个网络库,它实现了许多网络协议,并允许您创建自己的网络协议。与Twisted一起使用的协议之一是AMQP


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

RabbitMQ不仅仅是消息传递。。。它是一个通用平台,能够将应用程序相互连接。使用RabbitMQ,Java应用程序可以与Linux服务器和/或.NET应用程序、Ruby&rails+以及在企业web开发中占据一席之地的几乎任何东西对话。最重要的是,它实现了AMQP提出的“开火并忘记”模型。它只是JMS或ESB的完美替代品,特别是当您处理跨平台体系结构时,可以保证可靠性。甚至还有一个称为RPC(远程过程调用)的特殊功能,它增加了分布式arch中的开发难度


除此之外,在世界金融服务领域,如证券交易所或股票市场,需要大量可靠和高效的路由(假设您不知道订阅您的服务的实际人数,但希望确保谁会收到您的ping,无论他们是在此时连接,还是稍后连接),RabbitMQ规则,因为它基于ERLANG&一个开放的电信平台,在使用最少资源的同时确保高性能。有关RabbitMQ最方便的介绍,请参阅RabbitMQ.com/getstarted.html了解您的本机开发语言。

RabbitMQ使用消息队列技术,如AMQP,这有助于保持事物的整洁n和无延迟

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


要确切了解RabbitMQ是如何工作的,或者它是如何解决这些用例的,你应该看看这段YouTube视频,我不认为这类问题应该像重复阅读或垃圾邮件问题那样被否决。如果海报混淆了这两种技术的用途,那么我们应该解释他的误解是什么,可能有m任何其他人都有同样的问题。我是Twisted的长期用户,昨天我开始使用RabbitMQ,我的第一个反应是:“我们应该使用Twisted创建一个AMQP服务器,这将是一个非常合适的选择!”。这就是我的意思……Everyt