我有一个CRON Job,可以创建要在数据库中发送的电子邮件。 它创建了大约3000个独特的电子邮件发送。
然后我有一个像这样配置的CRON作业:
* * * * * php bin/console swiftmailer:spool:send --message-limit=200 --env=prod --no-debug
因此,第二个CRON作业尝试每分钟发送200封电子邮件。 我看的时候:
ps aux | grep php
它显示了多个同步进程swiftmailer:spool:send。
这些同时呼叫会导致多次发送同一封电子邮件。 所以今天,即使我的数据库中只有一个条目,一个用户也会收到多个相同的电子邮件。
有人已经有这个问题了吗?
谢谢!
答案 0 :(得分:0)
如果您需要使用多个swiftmailer:spool:send
进程来加快发送电子邮件的速度,那么我认为您根本不应该使用spool
。
但是您可以宁愿使用像RabbitMQ这样的单独的消息队列系统,该系统处理的情况是不会重复使用同一条消息。在此处阅读更多信息:
https://symfony.com/doc/current/messenger.html
https://symfony.com/doc/current/the-fast-track/en/18-async.html#going-async-for-real