Why use an ESB? - 802701ad/EzESB GitHub Wiki
Traditionally, separate systems can use Web Services and REST to communicate. Remote procedure calls are a good model. That allows the model where a service is provided and anyone can take advantage of that service. But what if you are in a situation where it's not so much a service being offered but a system wants to broadcast that something has happened, but doesn't know which other systems are interested. An ESB allows a system to send messages and allows other systems to subscribe to receive them. The system that sends the message doesn't need to know any thing about the systems that want to get it or even if there are any.