WCF su Binding MSMQ. Come posso rilevare quando un messaggio viene spostato nella coda del veleno?
-
12-11-2019 - |
Domanda
Sto eseguendo un client WCF che invoca un servizio WCF tramite un msmqbinding. Framework è .NET 4.0, il client e il server vengono eseguiti su Windows Server 2008 R2. La coda del canale è transazionale.
Il servizio è ospitato con questi parametri di associazione:
receiveErrorHandling="Move"
receiveRetryCount="3"
retryCycleDelay="00:00:20"
maxRetryCycles="5"
Dato che ((riceviretryCount + 1) * (maxretrycycles + 1)) è in vigore, ciò comporterà 4 * 6 = 24 tentativi di un dato messaggio prima che venga spostato nel subqueue veleno.
Allegato un IerrorHandler al mio servizio noto che HandleRror viene chiamato con un MSMQPoisonMessageException per un totale di 6 volte (per un messaggio veleno), prima che il sottosistema WCF sposta finalmente il messaggio nella subqueue; veleno.
Voglio registrare il tempo preciso quando viene eseguito un messaggio e il messaggio viene spostato nella coda del veleno. Mi sembra che l'unica opzione sia contare il numero di volte in cui un determinato messaggio e confrontare questo conteggio con i maxretrycycles vincolanti. Questo è imbarazzante ed errori.
La mia domanda è:
- C'è un modo per me di rilevare in modo conclusivo l'evento in cui il sottosistema WCF sposta il messaggio nella coda del veleno?
I miei riferimenti sono:http://msdn.microsoft.com/en-us/library/aa395218.aspx
Nessuna soluzione corretta