2012-12-05 14 views
9

Sto utilizzando MSMQ versione 4 e ho una coda di transazione. Sto usando WCF per ascoltare la coda per i messaggi in arrivo.Come posso contrassegnare esplicitamente i messaggi come avvelenati in un MSMQ transazionale con WCF

Durante l'elaborazione esiste una dipendenza da componenti di terze parti che potrebbero non funzionare o non essere disponibili per un periodo di tempo più lungo. Per compensare questo utilizzo la funzionalità di gestione dei messaggi velenosi in MSMQ 4 (http://msdn.microsoft.com/en-us/library/aa395218.aspx) per riprovare i messaggi x quantità di volte con y quantità di tempo di attesa.

Tuttavia in determinate situazioni so che il messaggio di input non è valido/avvelenato. Quando ciò avviene, generando eccezioni, il messaggio seguirà la routine di gestione dei messaggi velenosi come tutti gli altri messaggi con tutti i tentativi e i tempi di attesa. Ma quando so che il messaggio è avvelenato, non vedo un motivo per riprovare e attendere il tempo configurato perché sia ​​gestito dalla coda velenosa.

C'è un modo per contrassegnare esplicitamente un messaggio come avvelenato in modo da non seguire il flusso di tentativi configurato e spostarsi immediatamente sulla coda velenosa?

+0

Ho esattamente lo stesso problema. Prendo che non hai trovato alcuna soluzione? – Leon

+0

@Leon Infatti, nessuna soluzione trovata ancora. – Leo

+0

Sono un principiante MSMQ e non ho provato questo - scusa se è sciocco. Questo era nell'articolo a cui sei collegato, "La coda velenosa è una sottocoda della coda principale, è denominata" poison "e viene generata automaticamente da MSMQ. Per accedervi, fornire il nome della coda principale seguito da un" ; "e il nome della sotto-coda, in questo caso -" veleno ". Impossibile rilevare i messaggi velenosi, rimuoverli dalla coda principale e inviarli manualmente alla coda dei veleni incorporata? –

risposta

0

Bene Suggerirò in tal caso di archiviare i dati di richiesta nel DB e di non generare eccezioni in modo che il messaggio WCF sia elaborato correttamente e verrà rimosso dalla coda.

Questi dati possono essere elaborati in seguito, se necessario, è facile elaborare i dati dal DB di monitorare/gestire la coda velenosa.

È possibile avere una configurazione basata su quella che è possibile decidere la data/ora di elaborazione successiva del messaggio e un thread può rielaborare tali messaggi dal DB.

Problemi correlati