Domanda

Sto integrando diversi contesti limitati con bus di servizio di Windows e hanno alcune domande:

1) Come rilevare duplicati in altri contesti limitati? Conservare l'ultima sequenza dei messaggi elaborati? Voglio che la possibilità di ri-fuoco gli eventi per consentire la ri-sincronizzazione di nuovi contesti limitati HandleEvent(OrderPlaced orderPlaced, bool isReplay) che vengono acquistati in produzione in futuro per una sincronizzazione iniziale.

2) Per il bus di messaggi inter-context, utilizzeremmo un argomento per contesto limitato (e avremo lo spazio dei nomi per raggruppare i contesti limitati)? O un singolo contesto limitato per namespace?

3) La documentazione del bus del messaggio dice che i messaggi possono arrivare fuori uso, quale algoritmo deve essere utilizzato per riassemblare in ordine? Cosa succederebbe se i messaggi 6 e 8 sono stati ricevuti, ma 7 non è mai arrivato? Aspetteremmo un tempo specificato e quindi continuare? Come consentire l'auto-riparazione?

4) Immagino che quanto sopra sia piuttosto comune in quasi tutti i progetti DDD, ci sono delle biblioteche che gestiscono la messaggistica incluso il protocollo di comando / risposta per richiedere la sincronizzazione di eventi precedenti da un contesto limitato all'estero?

È stato utile?

Soluzione

Questo non risponde alla maggior parte delle tue domande, ma ti dà un'alternativa.

Un sacco di questi problemi è andato via quando ho iniziato a tirare eventi invece di averli spinti a me.Se sto tirando, tengo solo un checkpoint del numero dell'evento che ho elaborato.Quando ho bisogno di ricostruire, rimuovo i modelli di lettura e il checkpoint ei nuovi modelli di lettura verranno creati automaticamente.Dato che sto usando un singolo scrittore, i duplicati non sono un problema.Ordinare non è nemmeno un problema.

Abbiamo ancora degli eventi spinti anche però, ma questi vengono utilizzati solo per il comportamento reattivo.Per esempio;Quando viene posizionato un ordine, stampare un biglietto.

Se ciò ha senso per te, dipende da quanto è veloce per reagire alle cose, e quanto hai bisogno di avere i tuoi dati da essere (1 secondo contro 30 secondi, ecc.).

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