Электронная почта - обрабатывать электронные письма на сайте объявлений с помощью специального решения или с помощью 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.

Надеюсь это поможет!

Другие вопросы по тегам