Так же, как и в любой другой архитектуре, у вас есть свои плюсы и минусы, но, по моему опыту, положительные аспекты намного выше.
Для начала у вас нет единой точки отказа, и вы получаете асинхронную систему, что означает, что вы, вероятно, будете использовать некую систему очередей, позволяющую иметь инфраструктуру стойкости сообщений. Одна из отрицательных сторон таких систем и ее характер распределения затрудняют отладку или отслеживание сообщений без использования других технологий, таких как Splunk.
Что касается технологий с открытым исходным кодом, это действительно зависит от того, хотите ли вы больше ориентироваться на мир .NET (Mass Transit), Java (JMS), Javascript (Node).?