电子邮件-使用定制解决方案或芹菜/RabbitMQ处理广告网站电子邮件?
我需要处理一个中型项目的电子邮件,预计每小时发送20或30封电子邮件 我在另一个项目中设计了一个解决方案,它使用数据库表和每隔5到10分钟运行一次的cronjob来处理这个问题。数据库表非常简单。看起来像这样:电子邮件-使用定制解决方案或芹菜/RabbitMQ处理广告网站电子邮件?,rabbitmq,message-queue,celery,email-processing,Rabbitmq,Message Queue,Celery,Email Processing,我需要处理一个中型项目的电子邮件,预计每小时发送20或30封电子邮件 我在另一个项目中设计了一个解决方案,它使用数据库表和每隔5到10分钟运行一次的cronjob来处理这个问题。数据库表非常简单。看起来像这样: CREATE TABLE "atem_emails_envios" ( "id_email_envio" int4 NOT NULL, "id_email_msg" varchar(20) NOT NULL, "dat_inserted" timestamp NO
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存储到表中以避免冲突
我的问题就是这个方向。我一直在使用此表在流量较低的网站中处理电子邮件,效果很好。使用芹菜这样的队列管理器和RabbitMQ这样的代理有什么优势?在我看来,我将增加另一层复杂性。使用芹菜/RabbitMQ这样的解决方案,我将获得哪些好处
请给我一些线索
致以最诚挚的问候,就像那句古老的格言“它没有坏,不要修理它”。如果您不打算扩展或担心当前的CRON/PG设置,那么听起来并不需要使架构复杂化
也就是说,使用芹菜这样的异步框架有很多好处。举几个例子:
- 您很可能有未来的用例可以利用异步系统(SMS发送、用户处理、集成、缓存预热、Webhook等)
- 如果/当您扩展时更容易维护,因为它有很好的文档记录,并且有一个大型社区
- 更高的可视性和控制能力