什么是在中等流量网站上实施消息队列的最佳方式

时间:2012-02-13 14:19:44

标签: php symfony message-queue rabbitmq

首先,关于我的项目的一些基本信息:我有一个每天约有1000个访问者的网站,使用Symfony 2构建。对于某些任务我正在考虑实现一个消息队列,Rabbit MQ将是我的第一选择在一些互联网评论。

但我认为我将会有很多不同的任务类型(在第一阶段大约有10个任务),并且它们不会被那么多运行。例如:我想要一个用于发送电子邮件的消息队列:我希望立即发送这些电子邮件,因此创建一个cron作业并不是真的可以接受,但我的网站每天可能会发送5封电子邮件。

现在我想知道为每种任务类型创建消息队列是否更好。在这种情况下,我将不得不运行10个并发消费者。或者创建一个“通用”队列,它只使用消息中的参数执行Symfony2命令。

我认为最好和最“纯粹”的解决方案是第一个(10个队列),但我担心它有点“过度”...

那么有没有人有这方面的经验愿意帮助我?

2 个答案:

答案 0 :(得分:2)

我有同样的情况。我有兴趣建造类似的东西。

不幸的是,我仍在尝试设置该项目。到目前为止我花了一天时间,现在我可以发送和接收消息。我需要继续弄清楚文档所指的“服务”定义中的相关方式和内容。

当我得到答案时,我会明确地添加我的答案。

到目前为止,我做了什么:

  1. 下载Symfony 2
  2. 添加了以下子模块

    git submodule add git://github.com/videlalvaro/RabbitMqBundle.git vendor/bundles/OldSound/RabbitMqBundle
    git submodule add git://github.com/videlalvaro/php-amqplib.git endor/videlalvaro/php-amqplib
    
  3. 关于RabbitMqBundle的说明。

  4. ......我有一些工作,但尚未弄清楚哪些惯例有效。

答案 1 :(得分:1)

我建议为每个需要执行的唯一任务创建不同的队列,并为队列分配优先级,以便最先执行最重要的操作,即使稍后将其添加到队列中的其他消息中也是如此。 / p>

在队列处理器中,您可以使用消息正文作为参数执行不同的命令。