【发布时间】: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