电子邮件 - 流程广告网站电子邮件与自定义解决方案或使用芹菜/ RabbitMQ?

问题描述:

我需要处理一个中等项目的电子邮件,该项目将预计每小时发送20或30封电子邮件。电子邮件 - 流程广告网站电子邮件与自定义解决方案或使用芹菜/ RabbitMQ?

我在其他项目中设计了一个解决方案,该解决方案使用数据库表和每5或10分钟运行一次的cronjob来处理此问题。数据库表格非常简单。看起来像这样:

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等解决方案可以带来哪些好处?

请给我一些线索。

最好的问候,

那么像一句古老的格言“它不破,不解决它。”如果您不打算扩展或担心当前的CRON/PG设置,听起来并不像您真的需要使架构复杂化。

尽管如此,但使用如芹菜异步架构的好处。仅举几例:

  • 你很可能有,可以采取异步系统的优势,未来的使用情况(短信发送,用户处理,集成,高速缓存预热,网络挂接等)
  • 易于维护如果/当你扩展,因为它是有据可查的,并有一个大的社区
  • 更大的可视性和控制

至于复杂性,我们建立了一个整合,芹菜,您可以与我们的云消息队列服务IronMQ更换经纪人。检出http://Iron.io/celery。这将通过替换RabbitMQ来帮助降低您的复杂性和经纪人故障点。

希望这会有所帮助!