【问题标题】:RabbitMQ consumer + MySQL loadsRabbitMQ 消费者 + MySQL 负载
【发布时间】:2016-06-06 01:41:14
【问题描述】:

我是 AMQP 和 RabbitMQ 技术的新手。我习惯于在 mysql 表中存储队列,但是随着我的项目的成长,他们需要改变这种行为。安装和设置 RabbitMQ 完全没问题。我的一个项目处理大量 xml 文件(每天数十亿行)。因此,我创建了虚拟生产者,它只是将 XML 文件拆分为元素 (1....) 并推送这些元素(每个 xml 文件数千个)以与特定的路由密钥进行交换。还行吧。我写了一个示例工作者,它应该处理这些元素并将数据保存到数据库。但这就是问题所在,因为我一次无法阅读更多信息。因此,我需要从数据库中加载实际数据,将它们与 XML 元素进行比较,并将新数据一一推送到我的表中。在有 10000 行的文件中,我需要执行大约 6 个查询。这对 MySQL 的性能来说并不是那么好。在基于 Mysql 队列的解决方案中,我只加载 1000 行而不是 1 行的实际数据,处理这些行并将它们标记为已处理。因此,只有少数 MySQL 查询会为多行加载数据。在像兔子这样的基于 AMQP 的系统中是否可能出现这种情况?加载 1000 条消息,一次处理它们并一次确认它们? RabbitMQ 是针对这种行为创建的还是我需要使用其他技术?

谢谢

【问题讨论】:

    标签: mysql performance rabbitmq amqp


    【解决方案1】:

    有可能,您的情况似乎正是this example。因此,如果您需要这么多,只需启动 1000 个订阅者即可。

    【讨论】:

    • 解雇 1000 个订阅者没有帮助,它们是独立的进程,我无法将数据从一个订阅者传递给另一个订阅者。并且在实际设置下,1000个订阅者一个一个地处理消息会关闭mysql。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2021-05-20
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多