Я узнаю о NServiceBus и MSMQ. Мне сказали, что транзакционные очереди в MSMQ ПЛОХО, и их использование очень плохо для производительности. Кто-нибудь знает почему? Я предполагаю, что это происходит из-за того, что он использует DTC, и все знают, что DTC на самом деле не является масштабируемым решением. Мне кажется, что есть несколько причин, по которым MSMQ с NServiceBus не так уж и плох, но я не знаю, понимаю ли я, как он работает полностью. Глядя логически, я могу вспомнить 3 места, где NServiceBus может использовать транзакции для получения гарантированной доставки:
- При отправке сообщения по сети вы можете захотеть использовать транзакцию, чтобы убедиться, что сообщение попало в удаленную очередь, прежде чем вы его отбросите.
- При чтении сообщения из локальной очереди может потребоваться убедиться, что оно успешно обработано, прежде чем его отбрасывать.
- При публикации сообщения нескольким подписчикам может потребоваться убедиться, что оно достигнет ВСЕХ из них, прежде чем его отменить. (Я действительно надеюсь, что это не то, что делает NServiceBus)
Может кто-нибудь объяснить мне, как NServiceBus делает это?