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 >
