当前位置: 首页 > 知识库问答 >
问题:

为什么我们需要像RabbitMQ这样的消息代理,而不是像PostgreSQL这样的数据库呢?

商曦
2023-03-14

我对RabbitMQ这样的消息代理并不熟悉,我们可以使用它为Celery这样的调度系统创建任务/消息队列。

现在,问题是:

>

  • 我可以在PostgreSQL中创建一个表,该表可以添加新任务,并由消费者程序(如Celery)使用。

      null

    Redis也可以用作消息代理吗?我发现它更类似于Memcached,而不是rabbitMQ。

    请把这件事说清楚!

  • 共有1个答案

    况繁
    2023-03-14

    Rabbit的队列驻留在内存中,因此比在数据库中实现它要快得多。一个(好的)专用消息队列还应该提供与队列相关的基本特性,例如节流/流控制,以及选择不同路由算法的能力(rabbit提供了这些和更多)。根据项目的大小,您可能还希望消息传递组件与数据库分离,这样,如果一个组件经历了很重的负载,它就不需要妨碍另一个组件的操作。

    至于你提到的问题:

    >

  • 轮询保持数据库繁忙和低性能:使用Rabbitmq,生产者可以向消费者推送更新,这比轮询的性能高得多。数据只需在需要时发送给消费者,从而消除了对浪费的检查的需要。

  •  类似资料:
    • 问题内容: 在MySQL上,是否存在POSTGRESQL中的“ unnest”之类的功能? 查询(PSQL): 结果(如表所示): 问题答案: 简短答案 对的,这是可能的。从技术角度来看,您可以通过一个查询来实现。但是问题是-最有可能的是,您正在尝试将一些逻辑从应用程序传递到数据存储。数据存储旨在 存储 数据,而不是表示/格式化数据,或者甚至对其应用某些逻辑。 是的,MySQL没有数组数据类型,但

    • 在我的测试中,我一直使用TestNG注释,如@beforeSuite、@beforeClass等。 但是最近,我一直在阅读有关TestNG侦听器的内容,我不禁感到这些侦听器提供的大多数方法与一些注释的功能完全相同。 例如: @beforeSuite.onstart() @beforeMethod似乎与iInvokedMethodListener.beforeInvocation()相同。

    • 问题内容: 当每个人都可以使用jarsigner签名时,像Java的jars一样对代码进行签名有什么意义?它如何提供安全性? 问题答案: 签名JAR文件的重点是验证它是否已被篡改。对jar文件进行签名后,您可以验证该文件未被其他人修改。这样可以确保文件源自最初签名的人。如果有人修改了文件,则签名验证过程将失败。您可以查看本文,以获取有关如何使用公钥加密执行数字签名的更多详细信息。

    • 我想知道为什么不使用这个明显简洁的表达呢?

    • 我看到一个错误消息(uncattle typeerror:Cannot read property'add eventlistener'为null)我想问题是(getElementsByTagName)但无论如何它无法到达元素我想要的问题是什么

    • 本文向大家介绍为什么我们需要一个数据库,包括了为什么我们需要一个数据库的使用技巧和注意事项,需要的朋友参考一下 数据库是数据的集合,通常以电子形式存储。数据库的设计通常是为了使其易于存储和访问信息。 好的数据库对任何公司或组织都至关重要。这是因为数据库存储了有关公司的所有相关详细信息,例如员工记录,交易记录,工资详细信息等。 数据库重要的各种原因是- 管理大量数据 数据库每天存储和管理大量数据。使