MSMQ gooit berichten weg

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 22-09 23:32
Nogal een naar probleem, waar op internet wel wat ervaringen over staan, maar geen oplossing.

We hebben twee message queues, en twee workers.

Worker 1 verwerkt berichten van queue 1 naar queue 2.
Worker 2 verwerkt berichten van queue 2 naar de database.

De queues zijn transactional, en wanneer er fouten zijn dan wordt er een rollback gedaan. Echter, wanneer queue 2 zijn limiet qua file size bereikt, gaat het verzenden van de berichten gewoon goed, en er wordt geen fout gegooid door de queue.

Hier code van worker 1:
code:
1
2
3
4
5
6
7
8
9
10
11
                {
                    if (doAbort) throw new ManualAbortedException();
                    outputQueue.Send(queueToSend, queueTransaction);
                }
                catch (Exception ex)
                {
                    log.Fatal("error bij committen outputqueue, perform rollback", ex);
                    queueTransaction.Abort();
                    ProcessState = ProcessState.Failed;
                    return;
                }


Loopt dus gewoon door; terwijl de berichten niet in queue 2 verschijnen, en ook niet meer terug te vinden zijn.

Wat ik zou willen, is dat er gewoon een fout wordt gegooid wanneer de queue zijn limiet bereikt.

Iemand een idee om dit te bereiken?

Steeds monitoren of de queue zijn size heeft bereikt lijkt me niet de way to go.

Acties:
  • 0 Henk 'm!

  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

Ik heb geen ervaring met MSMQ, alleen met IBM MQ.

Maar... daar wordt een foutmelding gegeneerd als het vol zit, of de berichten gaan naar een dead letter queue. Bestaat deze en worden daar de berichten afgeleverd? Het kan haast niet dat de berichten in een zwart gat verdwijnen.*

* Zou niet kunnen, MQ is daar op ingericht. Het kan in de praktijk wel, als het niet goed is ingesteld of wanneer de praktijk de oude inrichting voorbij gaat.

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |


Acties:
  • 0 Henk 'm!

  • creator1988
  • Registratie: Januari 2007
  • Laatst online: 22-09 23:32
Nou, als de totale size (van de volledige messaging service) wordt overschreden, wordt er gewoon een fout gegooid. Een individuele message queue doet dit niet.

In de dead letter queue staat ook niets. Heel apart.