2013-03-08 15 views
9

Si verificano problemi con le code dei messaggi di Azure.Windows Azure MessageLockLostException

Sto avendo MessageLockLostException generato e L'operazione di richiesta non è stata completata entro il timeout assegnato di 00:01:10. Il tempo assegnato a questa operazione potrebbe essere una porzione di un timeout più lungo.

Ho impostato la coda su ReceiveMode.PeekLock.

ho anche controllare

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

Perché questo accada, che cosa sta causando il blocco per dare fuori? Stavo leggendo da qualche parte dal punto in cui ricevi che hai 5 minuti per impostazione predefinita. Questo processo richiede un po 'più di solito. Volevo rinnovare la serratura, ma non sta funzionando troppo bene.

+0

Sono io o il tuo messaggio non ti dice che il timeout del blocco è 1:10 (70 secondi)? Quella configurazione viene impostata quando viene creata la coda. –

risposta

16

LockDuration è la proprietà della coda. Di solito lo imposti quando crei la coda. Questa è la proprietà di livello Queue e non può essere modificata in una base messaggi. Quello che hai letto, molto probabilmente sta dicendo che questa durata non può essere più lunga di 5 minuti. Il valore predefinito è 1 minuto, ecco perché si affrontano problemi. E perché lo affronti 70 secondi dopo - presumo che la logica per controllare queste condizioni sia eseguita ogni 10 secondi.

Quindi suggerisco di creare o modificare la Coda per impostare la proprietà LockDuration su 5 minuti. Quindi, mentre si lavora RenewLock del messaggio, quando appropriato.

+1

Ah, grazie! Questo ha più senso! Per ulteriori informazioni: QueueDescription è dove LockDuration esiste. – Styles

+2

Come nota a margine, il valore predefinito quando si crea una coda dal portale di gestione è di 30 secondi. – ken2k