2013-01-11 24 views
12

Node.js uygulamasında gecikmiş işler için kue kullanıyorum.Node.js Kue başarısız işler nasıl yeniden başlatılır

Bir işin kimliğini, başarısız iş listesinden el ile redis komutlarını kullanarak etkin olmayan işlerin listesine taşımak zorunda kalmadan, kue API'sini kullanarak bir işi nasıl yeniden başlatabileceğimi anlamak için bazı sorunlarım var.

Bu kue kullanılarak yapılabilir mi?

Sabit sayıda yeniden deneme denemesi yapmak istemiyorum - Sadece belirli işleri yeniden denemek istiyorum.

Kue'ye iyi bakılmış bir alternatif için öneriler de kabul edilir.

cevap

11

ben bu çalışıp çalışmadığını bilmiyorum ama bir daha iş aktif için işin durumunu sıfırlamak için deneyin ve kurtarabilecek:

job.on('failed', function() { 
    job.state('inactive').save(); 

Düzenleme: Doğru-enqueue yeniden edecek etkin değil devlet ayarı görev.

+1

teşekkürler! "aktif" yerine "etkin olmayan" olarak ayarlanması gerekir, aksi takdirde artık işlenmeyecektir. Kodu gözden geçirip, durumu değiştirmeyi düşündüğünüzde, bu şekilde iş verilen listeye yeniden atanmayacaktı. – Matthias

3

Bu ayrıca sıra düzeyi olayları kullanılarak da yapılabilir.

Böylece yeniden denemek istediğiniz her iş için yapmanız gerekmez. Bunun yerine, sıra düzeyinde etkinliğe filtreleyebilirsiniz.

0

onlar bir başarısızlık olarak işaretlenir, bunlar başarısız olduğunda yani sadece tek bir girişimde sahip resmi dokümanlar varsayılan işleri ile

başarısızlık Girişimleri görmek ve müdahale kadar bu şekilde kalır. Bununla birlikte, Kue, bir e-postayı aktarma gibi, gibi işler için önemli olan bunu belirtmenize izin verir; bu, hata durumunda, genellikle hatasını yeniden dener. Bunu yapmak için bir sayı ile .attempts() yöntemini çağırır.

queue.create('email', { 
    title: 'welcome email for tj' 
    , to: '[email protected]' 
    , template: 'welcome-email' 
}).priority('high').attempts(5).save(); 

referans: failure attempts

İlgili konular