2017-05-24 37 views
0

我使用遲髮型,我想描述的不同場景對我RecurringJobs。但是我無法實現我期待的目標,而且如果CRON已經有限,那麼Hangfire使用的CRON就更多了。遲髮型的Cron表達式是無效的

我去讀書遲髮型文檔和我找到一個喜歡https://en.wikipedia.org/wiki/Cron#CRON_expression更復雜的表達式,然後在默認情況下遲髮型支持的人。但他們甚至不兼容,例如,Hangfire只有一分鐘,一小時,一個月,一天,一週的幾天,但如果我使用L或者?就像它在文檔中所說的那樣,它不起作用。我有這樣的錯誤以下錯誤的,該表達式16 14 L ? ?:從遲髮型

InnerException = {"'L' is not a valid [Day] crontab field value. It must be a numeric value between 1 and 31 (all inclusive)."} 

科雷有以下方法:Monthly(int day);會發生什麼。如果我選​​擇例如31?例如在每個月的最後一天,它仍然會像2月或4月那樣運行幾個月?或者我需要做些額外的事情來實現它?

這樣,發生了什麼?我似乎無法定義用戶選擇的一天的條件是31,總是在該月的最後一天運行後臺作業。而且我甚至不會談論第29或30天,這些也是特殊原因,並且我總是在每個月的最後一天處理後臺工作。

我利用Hangfire.CRON本月方法,但我不認爲它會治療的日子29,30和31我想要的方式雖然。

你確認遲髮型的Cron不使用由文件引用的克龍表達式,如果有任何的方式來實現我所期待的?此外,任何建議的教程或什麼來幫助我?我一直在閱讀https://github.com/atifaziz/NCrontab,我認爲這是Hangfire使用的一個,但它沒有那麼大的幫助。

回答

0

你是正確約NCrontab。 Hangfire使用它,所以你應該確保你的cron表達式被這個庫支持。 (如在NCrontab自述描述,或者你可以使用this例子)

Cron.Monthly(31)是:兩個簡單的選項來做到這一點翻譯爲0 0 31 * *,只有當前月份有31天時纔會觸發作業。

要在每月的最後一天總是運行後臺作業,添加三個單獨的作業:

0 0 30 4,6,9,11  * 
0 0 31 1,3,5,7,8,10,12 * 
0 0 28 2    * 

Cron job to run on the last day of the month