Jay Kreps created KAFKA-925:
-------------------------------

             Summary: Add optional partition key override in producer
                 Key: KAFKA-925
                 URL: https://issues.apache.org/jira/browse/KAFKA-925
             Project: Kafka
          Issue Type: New Feature
          Components: producer 
    Affects Versions: 0.8.1
            Reporter: Jay Kreps
            Assignee: Jay Kreps


We have a key that is used for partitioning in the producer and stored with the 
message. Actually these uses, though often the same, could be different. The 
two meanings are effectively:
1. Assignment to a partition
2. Deduplication within a partition

In cases where we want to allow the client to take advantage of both of these 
and they aren't the same it would be nice to allow them to be specified 
separately.

To implement this I added an optional partition key to KeyedMessage. When 
specified this key is used for partitioning rather than the message key. This 
key is of type Any and the parametric typing is removed from the partitioner to 
allow it to work with either key.

An alternative would be to allow the partition id to specified in the 
KeyedMessage. This would be slightly more convenient in the case where there is 
no partition key but instead you know a priori the partition number--this case 
must be handled by giving the partition id as the partition key and using an 
identity partitioner which is slightly more roundabout. However this is 
inconsistent with the normal partitioning which requires a key in the case 
where the partition is determined by a key--in that case you would be manually 
calling your partitioner in user code. It seems best to me to either use a key 
or always a partition and since we currently take a key I stuck with that.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to