2013-03-08 19 views
9

Azure Message Bus Queues ile ilgili sorun yaşıyorum.Windows Azure MessageLockLostException

MessageLockLostException atıyorum ve isteğim işlemi işlemi, 00:01:10 ayrılan zaman aşımı süresi içinde tamamlanmadı. Bu işlem için ayrılan süre, daha uzun bir zaman aşımı'un bir kısmı olabilir.

Kuyruğumu ReceiveMode.PeekLock'a ayarlıyorum. Ben de

if(message.LockedUntilUtc.Minute <= 1) 
    message.RenewLock(); 

Neden böyle olacağını kontrol

ne kilit vermeye sebep oluyor? Aldığınız noktanın bir noktasını öntanımlı olarak 5 dakikan var. Bu işlem genellikle biraz daha uzun sürer. Kilidi yenilemek istedim ama bu çok iyi çalışmıyor.

+0

Bana mı öyle ya da ileti kilit zaman aşımı 01:10 (70 saniye) olduğunu size söylemez? Bu yapılandırma, kuyruk oluşturulduğunda ayarlanır. –

cevap

16

LockDuration, Kuyruğun özelliğidir. Sırayı oluşturduğunuzda bunu genellikle ayarlarsınız. Bu Queue düzey özelliğidir ve bir mesaj tabanında değiştirilemez. Okuduğunuz şey, büyük olasılıkla bu sürenin 5 dakikadan daha uzun olamayacağını söylüyor. Varsayılan değer 1 Dakikadır, bu yüzden sorunla karşılaşırsınız. Ve neden 70 saniye sonra yüzleşiyorsunuz - bu koşulların kontrol edilmesi için mantığın her 10 saniyede bir yapıldığını varsayalım.

yüzden oluşturmak veya 5 dakikaya LockDuration özelliğini ayarlamak için Sıra'yı değiştirmenizi öneririz. Ardından, uygun olduğunda iletinizin RenewLock çalışırken.

+1

Ah, teşekkürler! Bu daha mantıklı! Ek bilgi için: QueueDescription, LockDuration öğesinin bulunduğu yerdir. – Styles

+2

Bir yan not olarak, yönetim portalından bir kuyruk oluşturduğunuzda varsayılan değer 30 saniyedir. – ken2k

İlgili konular