Задать вопрос
@sl1m_dogg

Как с помощью rabbitmq ускорить отправку писем (php)?

Пишу тестовое на symfony, нужно отправить 9600 писем за максимально быстрые сроки. Задумался разрулить этот вопрос с помощью rabbitmq, но не понимаю сам механизм, как сделать так чтобы рэббит сам отправлял письма?
  • Вопрос задан
  • 1016 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
lexxpavlov
@lexxpavlov
Программист, преподаватель
сам по себе никак. rabbitmq, zeromq, gearman и подобные не выполняют задачи, вы должны сами делать обработчик, который будет обрабатывать. А подобные очереди делают очень простую вещь - дают программе быстро передать задачу в очередь так, чтобы обработчик (обработчики) мог заниматься делом.
Ответ написан
slimus
@slimus
Symfony, Golang
rabbit как уже сказал Алексей Павлов всего лишь реализация queue, а как туда будут попадать данные и вычитываться вам нужно будет реализовать самому
Сделайте очереди на redis + https://github.com/michelsalib/BCCResqueBundle
Ответ написан
Комментировать
@veitmen
Задача решается очень разным путями. И в первую очередь нужно подумать о хитростях. :)

Во первых одно письмо отправляется 9600 клиентам или 9600 разных писем отправляется? Если 9600 клиентов, то нужно не забывать о том, что одно письмо может содержать много адресатов. Понятно что есть ограничения, но забывать об этом нельзя.

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

Еще нужно помнить о том, что можно за раз отправить несколько писем сформировав Batch, если это поддерживает сервис отправки писем (если это сервис ессно).
Ответ написан
Комментировать
okwinza
@okwinza
PHP Developer
Использовать сервер очередей для такой задачи не самое лучшее решение. Раббит хорош, когда сообщения принимаются от множества источников к небольшому кол-ву консьюмеров, помимо простой очереди от одного к другому. В вашей же задачи ровно противоположное.

Посмотрите в сторону gearman.org
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы