Sto imparando su NServiceBus e MSMQ. Mi è stato detto che le code transazionali in MSMQ sono BAD e il loro utilizzo è davvero negativo per le prestazioni. Qualcuno sa perché? Immagino che questo derivi dal fatto che usa DTC e tutti sanno che il DTC non è una soluzione veramente scalabile. Mi sembra che ci siano un paio di motivi per cui MSMQ con NServiceBus non è poi così male, ma non so se capisco come funziona completamente. Guardando a questo logicamente, mi viene in mente 3 posti dove NServiceBus potrebbe utilizzare le transazioni al fine di ottenere la consegna garantita:NServiceBus: le transazioni MSMQ non sono BAD?
- Quando si invia un messaggio attraverso la rete, si potrebbe desiderare di utilizzare una transazione per garantire che il messaggio ha arrivato alla coda remota prima di scartarla.
- Durante la lettura di un messaggio da una coda locale, è necessario assicurarsi che sia gestito correttamente prima di scartarlo.
- Quando si pubblica un messaggio per più abbonati, è necessario assicurarsi che raggiunga TUTTI loro prima di scartarlo. (Spero davvero che NON sia quello che fa NServiceBus)
Qualcuno può dirmi come funziona NServiceBus?
Potrebbe essere un po 'problematico per le prestazioni, ma non li chiamerei BAD, poiché un'operazione può essere transazionale è in genere una "buona cosa" (tm) –
L'invio di messaggi MSMQ transazionali non utilizza DTC. L'invio di messaggi MSMQ transazionali e la scrittura del fatto su un server SQL (ad esempio), tuttavia, utilizza DTC. –