Электронная почта - обрабатывать электронные письма на сайте объявлений с помощью специального решения или с помощью Celery/RabbitMQ?
Мне нужно обработать электронные письма для среднего проекта, который будет отсылать 20 или 30 электронных писем в час.
Я разработал решение в другом проекте, который использует таблицу базы данных и cronjob, выполняемый каждые 5 или 10 минут, чтобы справиться с этим. Таблица базы данных очень проста. Выглядит так:
CREATE TABLE "atem_emails_envios" (
"id_email_envio" int4 NOT NULL,
"id_email_msg" varchar(20) NOT NULL,
"dat_inserted" timestamp NOT NULL,
"dat_sended" timestamp,
"try_number" int4,
"max_tries" int4 NOT NULL,
"email_from" varchar(500) NOT NULL,
"email_to" varchar(500) NOT NULL,
"email_cc" varchar(500),
"email_bcc" varchar(500),
"email_subject" varchar(500) NOT NULL,
"email_msg" text NOT NULL,
"error_msg" text,
"i_started" timestamp,
"pid" int4,
"coment" varchar(2000),
"id_utiliz_ins" varchar(45),
"id_utiliz_upd" varchar(45),
"data_ult_actual" timestamp,
PRIMARY KEY("id_email_envio"),
CONSTRAINT "Ref_atem_emails_envios_to_atem_mensagens_email" FOREIGN KEY ("id_email_msg")
REFERENCES "atem_mensagens_email"("id_email_msg")
MATCH SIMPLE
ON DELETE NO ACTION
ON UPDATE NO ACTION
NOT DEFERRABLE
);
Когда электронная почта обрабатывается, я просто сохраняю PID в таблице, чтобы избежать коллизий.
Мой вопрос идет в этом направлении. Я использую эту таблицу для обработки электронной почты на веб-сайте с низким трафиком, и работает хорошо. Какие преимущества у меня есть при использовании менеджера очередей, такого как Celery, и такого брокера, как RabbitMQ? Мне кажется, что я добавлю еще один уровень сложности. Какие преимущества я получу, используя такое решение, как Celery/RabbitMQ?
Пожалуйста, дайте мне несколько подсказок.
С уважением,
1 ответ
Ну, как старая поговорка "не сломайся, не чини". Не похоже, что вам действительно нужно усложнять архитектуру, если вы не планируете масштабировать или беспокоиться о текущей настройке CRON/PG.
Тем не менее, есть преимущества использования асинхронной среды, такой как Celery. Назвать несколько:
- Вполне возможно, что в будущем вы сможете использовать асинхронную систему (отправка SMS, обработка пользователей, интеграция, подогрев кеша, веб-зацепки и т. Д.).
- легче поддерживать, если / когда вы масштабируете, так как это хорошо документировано и имеет большое сообщество
- лучшая видимость и контроль
Что касается сложности, мы создали интеграцию с Celery, чтобы вы могли заменить брокера нашим облачным сервисом очереди сообщений IronMQ. Проверьте http://iron.io/celery. Это поможет снизить сложность и вероятность сбоя посредника, заменив RabbitMQ.
Надеюсь это поможет!