我已经阅读了很多关于RabbitMQ集成到Symfony应用程序的文章.
所述RabbitMqBundle使得它很容易忘恩它,并且它提供了方便的rabbitmq:consumer
命令从像这样的队列的消息:
app/console rabbitmq:consumer -m 50 upload_picture
不过我有一个问题.您是否应该建议将此命令添加到crontab?有没有关于它的最佳实践?
更容易接受的方法是让您的消费者继续运行.Supervisor和Circus等工具可以帮助您.见这个讨论.但是如果你没有更多的消息可以让你的消费者退出,你也可以使用cron.虽然这可能会导致消费消息的延迟.您无法立即对邮件做出反应.在任何任务启动/收到邮件之前,用户可能需要等待一分钟.
在长时间运行您的消费者(或任何PHP代码)时,请考虑以下因素:
尽量避免内存使用累积.不要在没有清除它们的情况下继续附加到数组.这意味着您不应该在Monolog中使用FingersCrossedHandler,因为这会保留日志消息的缓冲区.适用于单个请求,不适用于几天的调试消息.
即使你小心,PHP也可能泄漏内存.你能说什么,PHP ......(这确实可以成为一句流行语)在我的情况下,我安装了一个cronjob,每晚重新启动工作人员,但从理论上讲,消费者可能会在内存不足之前运行一个月左右.