* Topic routing. With RabbitMQ you can bind queue X to exchange Y with the routing keys "foo.bar." and "foo..baz". The queue will then get all messages matching those keys. That allows for very flexible pub-sub-style routing of messages; we use this extensively. As far as I can see, not really possible with Kafka without message duplication.
* Nacking model. Since Kafka queues are strictly linear, if a consumer fails to consume a message and wants to nack it and then process the remaining messages, it can't do so, since it has a single "read head". It would have to re-enqueue the message in that case.
* Prioritization. Not supported. You will have to create topics for different priorities and then consume those topics at a different rate depending on the priority.
* Message TTL.
And it's susceptible to network partitions, just like RabbitMQ.
It makes me sad to see this is still something people say. I hope you reconsider this sentiment and investigate some of the really great Java-based software out there, especially Zookeeper and Kafka.
It's worth checking out how Zookeeper and Kafka did in aphyr's testing:
*Note: never more than 31GB
Yet so many of the services you use run on it.