J'apprends sur NServiceBus et MSMQ. On m'a dit que les files d'attente transactionnelles dans MSMQ sont BAD et leur utilisation est vraiment mauvaise pour la performance. Quelqu'un sait-il pourquoi? Je suppose que cela vient de la notion qu'il utilise DTC et tout le monde sait que le DTC n'est pas vraiment une solution évolutive. Il me semble qu'il y a plusieurs raisons pour lesquelles MSMQ avec NServiceBus n'est pas si grave, mais je ne sais pas si je comprends comment ça fonctionne complètement. En regardant cette logique, je peux penser à 3 endroits où NServiceBus peut utiliser des transactions afin d'obtenir la livraison garantie:NServiceBus: les transactions MSMQ ne sont-elles pas mauvaises?
- Lors de l'envoi d'un message à travers le réseau, vous pouvez utiliser une transaction pour faire en sorte que le message a est arrivé à la file d'attente à distance avant de la rejeter.
- Lors de la lecture d'un message à partir d'une file d'attente locale, vous souhaiterez peut-être vous assurer qu'il est correctement géré avant de le supprimer.
- Lors de la publication d'un message à plusieurs abonnés, vous souhaiterez peut-être vous assurer qu'il atteint TOUS les messages avant de l'ignorer. (J'espère vraiment que ce n'est pas ce que fait NServiceBus)
Quelqu'un peut-il me dire comment NServiceBus fait cela?
Ils pourraient être un peu défiés par les performances - mais je ne les appellerais pas BAD - avoir une opération être transactionnelle est généralement une "bonne chose" (tm) –
L'envoi de messages MSMQ transactionnels n'utilise pas DTC. L'envoi de messages MSMQ transactionnels et l'écriture du fait sur un serveur SQL (à titre d'exemple), par contre, utiliserait DTC. –