2014-05-12 71 views
1

我使用iron-io/iron_mq 1.5.1運行Laravel 4.1.25,這是我第一次嘗試排隊。根據文檔(http://laravel.com/docs/queues),當您完成處理作業時,應該從隊列中刪除它。但是,在我的測試中,我注意到Laravel會將任何作業返回到Iron.io隊列,如果它引發異常(記錄的行爲),但是如果作業成功並沒有拋出異常,它會從隊列。Laravel 4.1.25會自動刪除成功的作業嗎?

Iron.io特有的東西(使用拉隊列),並且如果我在最後運行$job->delete()會傷害它,儘管事實上Laravel已經清理了已處理的作業?

回答

3

因此,仔細研究源代碼後,我發現如果您將public $delete = true;添加到包含您的fire()方法的類中,Laravel會自動刪除已完成的作業。這是從Illuminate\Queue\Worker process()引用的,它在調用$job->fire()後檢查$job->autoDelete()

在我的情況下,這沒有設置,我無法可靠地重現我正在嘗試修復的問題。我正在設置$delete,因爲無論如何,Laravel都會將異常拋出作業返回隊列。

+0

你是說默認情況下不會刪除,除非你添加該行嗎?這似乎很奇怪。 –

+0

@TravisR儘管autoDelete()是一件事情(我查看了隊列工作者中涉及的大部分代碼),但文檔仍會指導您手動刪除作業。我想他們覺得這是一個合理的默認設置,但是如果有autoDelete()功能記錄,那將會很不錯。 – Wogan

相關問題