The options you mentioned are all very different beasts.
First about Vert.x-Eventbus:
It is by default distributed und broker-less so it doesn't require centralized infrastructure. There are no delivery guarantees for events being sent over it.
The others:
- ActiveMQ: Brokercentric multi purpose message broker. Supports Pub/Sub and Pub/Sub/Callback and guaranteed delivery. It supports many standard messaging protocols, most importantly JMS, AMQP and MQTT
- RabbitMQ: Brokercentric multi purpose message broker. Supports Pub/Sub and
Pub/Sub/Callback and guaranteed delivery. It supports many standard
messaging protocols, most importantly JMS, AMQP and MQTT
- Kafka: Brokercentric, highly opinionated Pub/Sub implementation. No delivery guarantees. People often produce a brutal mess by
a) not realizing what Kafka is built for
b) not spending enough time understanding the way it is builkd (which you have to to use it correctly)
- ZeroMQ: This more a specification than an actual bus. There are tons of implementations for all kinds of different platforms. Very low footprint in RAM and on the network. But it's basically "build your own" eventbus. Even if you don't use it I suggest reading the documentation as it covers so many areas of distributed systems.