2013-02-15 31 views
0

我需要處理一箇中等項目的電子郵件,該項目將預計每小時發送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等解決方案可以帶來哪些好處?

請給我一些線索。

最好的問候,

回答

0

那麼像一句古老的格言「它不破,不解決它。」如果您不打算擴展或擔心當前的CRON/PG設置,聽起來並不像您真的需要使架構複雜化。

儘管如此,但使用如芹菜異步架構的好處。僅舉幾例:

  • 你很可能有,可以採取異步系統的優勢,未來的使用情況(短信發送,用戶處理,集成,高速緩存預熱,網絡掛接等)
  • 易於維護如果/當你擴展,因爲它是有據可查的,並有一個大的社區
  • 更大的可視性和控制

至於複雜性,我們建立了一個整合,芹菜,您可以與我們的雲消息隊列服務IronMQ更換經紀人。檢出http://Iron.io/celery。這將通過替換RabbitMQ來幫助降低您的複雜性和經紀人故障點。

希望這會有所幫助!

相關問題