General purpose message broker—uses variations of request/reply, point to point, and pub-sub communication patterns.
Smart broker / dumb consumer model—consistent delivery of messages to consumers, at around the same speed as the broker monitors the consumer state.
Mature platform—well supported, available for Java, client libraries, .NET, Ruby, node.js. Offers dozens of plugins.
Communication—can be synchronous or asynchronous.
Deployment scenarios—provides distributed deployment scenarios.
Multi-node cluster to cluster federation—does not rely on external services, however, specific cluster formation plugins can use DNS, APIs, Consul, etc.
https://www.upsolver.com/blog/kafka-versus-rabbitmq-architecture-performance-use-case