让我们看看我是否可以解释这个问题的结构。
我运行一个Web服务,使用RabbitMQ和名为Minion的ruby库异步处理电子邮件发送。在某些模型(如注释)上,我们有一个后创建钩子,它向Rabbit添加一个电子邮件事件。然后,通过作为rake任务a gist here运行的工作程序处理此事件,该任务加载相应的用户并发送电子邮件。
此设置适用于90%的情况,但由于ActiveRecord :: RecordNotFound异常,工作人员偶尔会崩溃。但是这怎么可能,我在创建对象后对事件进行排队,并且事件通过Rabbit层需要额外的ms。可能是rake任务的上下文导致了问题吗?使用环境标志在rake中运行长期运行的工作人员是不是一个糟糕的选择?救命! :)