[ 
https://issues.apache.org/jira/browse/KAFKA-1497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Manikumar resolved KAFKA-1497.
------------------------------
    Resolution: Fixed

MIrrorMaker now uses single producer instance.

> Change producer load-balancing algorithm in MirrorMaker
> -------------------------------------------------------
>
>                 Key: KAFKA-1497
>                 URL: https://issues.apache.org/jira/browse/KAFKA-1497
>             Project: Kafka
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 0.8.1.1
>            Reporter: Ivan Kunz
>
> Currently the MirrorMaker uses the following way of spreading the load into 
> configured producers :
>             val producerId = 
> Utils.abs(java.util.Arrays.hashCode(msgAndMetadata.key)) % producers.size()
> This way if the producer side of MM uses different than the default 
> "partitioner.class" messages within the same partition can get re-ordered. 
> Also hashCode does not produce the same results on different machines 
> (verified by testing) so cannot be safely used for partitioning between 
> distributed systems connected via MM (for us message order preservation 
> within a partition is a critical feature).
> It would be great if the code above is changed to utilize the configured 
> "partitioner.class". 
> Something along the lines of  :
> At the initialization:
>       mmpartitioner = 
> Utils.createObject[Partitioner](config.partitionerClass, config.props)      
> During the processing:
>             val producerId = 
> mmpartitioner.partition(msgAndMetadata.key,producers.size())
> This way the messages consumed and produced by MM can remain in the same 
> order.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to