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
> 

Reply via email to