Now I understand. The key in the messages will no longer be used after the partition number is specified in the produce request. Thanks!
Cheers, Churu On Mar 6, 2014, at 10:41 AM, Joel Koshy <[email protected]> wrote: > It is done by the producer - it calls the partitioner before creating > the producer-request. > > On Thu, Mar 06, 2014 at 10:17:22AM -0800, Churu Tang wrote: >> Thanks for the reply! If the broker does not make the decision, then where >> and how the key is used to calculate the partition number? >> >> On Mar 5, 2014, at 5:42 PM, Joel Koshy <[email protected]> wrote: >> >>>> I have 2 questions about the partition number and key. >>>> 1. The produceRequest will explicitly include a partitionNumber, and >>>> messageSet which contains messages with key(can be NULL, used to calculate >>>> partitionNumber when specified). I am assuming all the messages in the >>>> messageSet will be published to the partitionNumber specified. So My >>>> question is, since the partitionNumber is explicitly specified in the >>>> produce request, will the key still be used in calculating the partition >>>> number when the request is handled at the server side? If so, how? >>> >>> The broker does not make this decision. i.e., it will attempt to >>> append the message to the partition specified in the produce request. >>> >>>> 2. In the introduction, it mentioned we can customize the >>>> kafka.producer.Partitioner to influence the routing decision. Would you >>>> please tell me where I can add my own Partitioner? I use the >>>> kafka_2.8.0-0.8.0 binary, and the C++ client supporting kafka 0.8. >>> >>> Which C++ library do you use? Non-java clients are maintained outside >>> the main Kafka code base. You will have to contact that client's >>> maintainer to get an answer to this question. >>> >>> Joel >> >
