Event-driven programming is the dominant paradigm used in graphical user interfaces applications and network servers.
In an event-driven application, there is generally an event loop that listens for events and then triggers a callback function when one of those events is detected.
It's important to differentiate between event-driven and message-driven (aka queue driven) paradigms: Event-driven services (e.g. AWS SNS) are decoupled from their consumers. Whereas queue / message driven services (e.g. AWS SQS) are coupled with their consumers.[1]