A message broker is essentially a software interface layer which takes in incoming messages from an application source and then take some actions on it as defined in code.
RabbitMQ is a popular open source message broker written in Erlang language and developed and maintained by Pivotal Labs. It is quite lightweight, supports multiple messaging protocols and can easily be deployed on premise or on cloud.
Apache Kafka is a distributed streaming platform developed by LinkedIn and is built for high horizontal scaling. It can process large amounts of streamed data on the disk and is used widely for realtime streaming data analysis.
ActiveMQ is an open source messaging broker written in Java. It was originally developed at company LogicBlaze and was later donated to Apache community. It is used for integrations in micro services architecture and supports complex message routing patterns defined in Enterprise Integration Patterns.