[
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)