What's the purpose of Kafka's key/value pair-based messaging? : <p>All of the <a href="https://www.google.com/#q=kafka+producer+key+value" rel="noreferrer">examples</a> of <a href="https://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html" rel="noreferrer">Kafka</a> | <a href="https://www.tutorialspoint.com/apache_kafka/apache_kafka_simple_producer_example.htm" rel="noreferrer">producers</a> show the <code>ProducerRecord</code>'s key/value pair as not only being the same type (all examples show <code>&lt;String,String&gt;</code>), but the same <strong>value</strong>. For example:</p>

<pre><code>producer.send(new ProducerRecord&lt;String, String&gt;("someTopic", Integer.toString(i), Integer.toString(i)));
</code></pre>

<p>But in the Kafka docs, I can't seem to find where the key/value concept (and its underlying purpose/utility) is explained. In traditional messaging (ActiveMQ, RabbitMQ, etc.) I've always fired a message at a particular topic/queue/exchange. But Kafka is the first broker that seems to require key/value pairs instead of just a regulare 'ole string message.</p>

<p>So I ask: <strong>What is the purpose/usefulness of requiring producers to send KV pairs?</strong></p>
