hunter2046 commented on pull request #507:
URL: https://github.com/apache/pulsar-client-go/pull/507#issuecomment-822802546
> The point is wrong, can MessageRouter not meet our functions?
>
> e.g:
>
> ```
> producer, err := client.CreateProducer(ProducerOptions{
> Topic: "my-partitioned-topic",
> MessageRouter: func(msg *ProducerMessage, tm TopicMetadata) int
{
> fmt.Println("Routing message ", msg, " -- Partitions:
", tm.NumPartitions())
> return 2
> },
> })
> ```
Thanks for taking a look. MessageRouter is what we need. We'd like to set
the MessageRouter to a function that works similar to the defaultRouter with a
customized number of partitions, e.g.
```
internalRouter := pulsarClient.NewDefaultRouter(
getHashingFunction(producerOptions.HashingScheme),
producerOptions.BatchingMaxMessages,
producerOptions.BatchingMaxSize,
producerOptions.BatchingMaxPublishDelay,
producerOptions.DisableBatching)
messageRouter := func(message *pulsarClient.ProducerMessage, metadata
pulsarClient.TopicMetadata) int {
// customNumberOfPartitions could be different from
metadata.NumPartitions() here
return internalRouter(message, customNumberOfPartitions)
}
```
The problem is that `getHashingFunction` is not exposed so we can't use it
to feed the `NewDefaultRouter` method.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]