Как лучше всего реализовать очередь сообщений на веб-сайте со средним трафиком? - PullRequest
2 голосов
/ 13 февраля 2012

Прежде всего, некоторая базовая информация о моем проекте: у меня есть веб-сайт с около 1000 посетителей в день, созданный с помощью Symfony 2. Для некоторых задач, которые я думаю о реализации очереди сообщений, Rabbit MQ будет моим первым выбором на основев некоторых обзорах Интернета.

Но я думаю, что у меня будет много разных типов задач (на первом этапе около 10 задач), и они не будут запускаться так часто.Например: я хочу очередь сообщений для отправки электронных писем: я хочу, чтобы они отправлялись немедленно, поэтому создание задания cron не очень приемлемо, но мой веб-сайт может отправлять 5 электронных писем в день.

Теперь мне интересно, лучше ли создавать очереди сообщений для каждого типа задач.В этом случае мне придется запустить 10 одновременных потребителей.Или создайте одну «общую» очередь, которая просто выполняет команду Symfony2 с параметрами в сообщении.

Я думаю, что лучшим и самым «чистым» решением было бы первое (10 очередей), но я боюсь, что оно немного «перестаралось» ...

Так что у кого-нибудь естьопыт с этим готов мне помочь?

Ответы [ 2 ]

2 голосов
/ 06 марта 2012

У меня такая же ситуация. Я заинтересован в создании чего-то подобного.

К сожалению, я все еще пытаюсь настроить проект. Я провел день до сих пор, и теперь я могу отправлять и получать сообщения. Мне нужно продолжить выяснять, как и что относится к определению «сервис», к которому относится документация.

Когда у меня будет ответ, я обязательно добавлю свой ответ.

Пока что я сделал:

  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 .

... У меня что-то работает, но еще не понял, как работает, по каким соглашениям.

1 голос
/ 06 марта 2012

Я бы порекомендовал создавать разные очереди для каждой уникальной задачи, которую необходимо выполнить, и назначать приоритеты очередям, чтобы наиболее важные действия выполнялись первыми, даже если они добавляются позже вместе с другими сообщениями в очереди.

В вашем обработчике очереди вы можете выполнять различные команды, используя тело сообщения в качестве параметров.

...