I realize this is a strange way to post this question. We are in the process of deciding on message passing tools for a new Microservices (MS) infrastructure. Initially, the majority of microservices will just be accessing data from databases and simply passing those results to the requester. Eventually, this data will be passed back and forth amongst microservices for more processing. The data may get quite large.
I've been looking at traditional message queues like RabbitMQ and ActiveMQ - which started as transactional, producer-pushed, point-to-point queues ... and have since branched out into pub-sub, streaming, and topics with multiple consumers.
Apache Kafka seemed to come from the other direction starting with streaming, non-point-to-point topics, and then adding point-to-point, and guaranteed one-delivery-only options.
At the start of our project, a traditional, very simple ActiveMQ/RabbitMQ message queue (where one producer sends one message to one consumer) will work fine. It is yet undecided where the use cases will expand to in the future.
To me, it seems that Apache Kafka can do everything that ActiveMQ/RabbitMQ can do. The biggest difference being that the *MQs are producer pushed (producer controlled) whereas Kafka is consumer controlled.
So, based on the above ...
What can ActiveMQ/RabbitMQ do that Kafka CAN'T do?
What benefits would I get from RabbitMQ/ActiveMQ that I CAN'T get from Kafka?