[ https://issues.apache.org/jira/browse/KAFKA-925?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jay Kreps updated KAFKA-925: ---------------------------- Attachment: KAFKA-925-post-commit-v1.patch Yeah fair point. I didn't realize we had a special infinity value so I used Int.MaxValue to be "a long time". Attached is a patch that fixes that and cleans up some of the cli docs. > 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 > Fix For: 0.8.1 > > Attachments: KAFKA-925-post-commit-v1.patch, KAFKA-925-v1.patch, > KAFKA-925-v2.patch > > > 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