Domanda

Attualmente sto costruendo due servizi di windows:

  • Il primo accetta messaggi da una connessione a internet e la inserisce in un database.Questo è stato progettato per essere veloce e stabile e non fare di qualsiasi altra elaborazione

  • Il secondo esegue un processo batch con tutti i nuovi messaggi che sono arrivati dall'ultimo corso.

Sto cercando di pensare a un modo in modo che il secondo servizio verrà eseguito solo il suo processo batch quando i nuovi messaggi sono pronti per essere elaborati e se il secondo servizio di errori il primo servizio continuerà e viceversa.Al momento si utilizza un ciclo ogni 5 secondi.

Attualmente sto pensando di utilizzare una coda di messaggi, in cui per la prima volta scrive un messaggio solo se la coda è vuota, e il secondo servizio sarà vedere se la coda contiene tutti i messaggi, se non vai in asincrono attendere fino a quando arriva un messaggio e quindi rimuovere il messaggio ed eseguire.Quindi usando la coda non veramente come una coda, ma come un interruttore binario che quando lo stato cambia le cause di un evento per essere attivato per il secondo servizio.

Presumo che ci sia un modo migliore di fare ciò che non ho incontrato qualcuno potrebbe per favore mi punto nella giusta direzione?

È stato utile?

Soluzione

In realtà, il modo in cui è ESATTAMENTE come vorrei implementare questa per questi risultati.Con MSMQ, non è necessario controllare per vedere se si dispone di un messaggio scritto per la coda, il primo servizio che scrive per la coda, e il secondo servizio legge solo da processo (quando attivo).

La bellezza di utilizzare MSMQ è che l'uno o l'altro servizio può essere giù, ma il code sarà, quindi, è possibile continuare l'elaborazione.

Altri suggerimenti

A me sembra come se per questo caso è necessario disporre di un mailslot.Il primo servizio memorizza nel DB e quindi invia un "lavoro da fare" messaggio.L'altro attende i messaggi in ingresso.

MSMQ è un po ' pesante per qualcosa di così semplice.Poi di nuovo si potrebbe utilizzare MSMQ e di sbarazzarsi di che DB tutto troppo. Che sarebbe il modo per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top