Understanding concepts in Event Driven Architectures (EDA)

Event Driven Architecture has become a very popular choice in recent times for developing highly scalable distributed systems. Is a way of designing software where different parts of the system communicate by sending and reacting to events.