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

Randall Hauch updated KAFKA-2649:
---------------------------------
    Description: 
The only way for Processor implementations to control partitioning of forwarded 
messages is to set the partitioner class as property 
{{ProducerConfig.PARTITIONER_CLASS_CONFIG}} in the StreamsConfig, which should 
be set to the name of a {{org.apache.kafka.clients.producer.Partitioner}} 
implementation. However, doing this requires the partitioner knowing how to 
properly partition *all* topics, not just the one or few topics used by the 
Processor.

Instead, Kafka Streams should make it easy to optionally add a partitioning 
function for each sink used in a topology. Each sink represents a single output 
topic, and thus is far simpler to implement. Additionally, the sink is already 
typed with the key and value types (via serdes for the keys and values), so the 
partitioner can be also be typed with the key and value types. Finally, this 
also keeps the logic of choosing partitioning strategies where it belongs, as 
part of building the topology.


  was:
The only way for Processor implementations to control partitioning of forwarded 
messages is to set the partitioner class as property "{{
ProducerConfig.PARTITIONER_CLASS_CONFIG}}" in the StreamsConfig, which should 
be set to the name of a {{org.apache.kafka.clients.producer.Partitioner}} 
implementation. However, doing this requires the partitioner knowing how to 
properly partition *all* topics, not just the one or few topics used by the 
Processor.

Instead, Kafka Streams should make it easy to optionally add a partitioning 
function for each sink used in a topology. Each sink represents a single output 
topic, and thus is far simpler to implement. Additionally, the sink is already 
typed with the key and value types (via serdes for the keys and values), so the 
partitioner can be also be typed with the key and value types. Finally, this 
also keeps the logic of choosing partitioning strategies where it belongs, as 
part of building the topology.



> Add support for custom partitioner in sink nodes
> ------------------------------------------------
>
>                 Key: KAFKA-2649
>                 URL: https://issues.apache.org/jira/browse/KAFKA-2649
>             Project: Kafka
>          Issue Type: Sub-task
>          Components: kafka streams
>            Reporter: Randall Hauch
>            Assignee: Randall Hauch
>             Fix For: 0.9.0.0
>
>
> The only way for Processor implementations to control partitioning of 
> forwarded messages is to set the partitioner class as property 
> {{ProducerConfig.PARTITIONER_CLASS_CONFIG}} in the StreamsConfig, which 
> should be set to the name of a 
> {{org.apache.kafka.clients.producer.Partitioner}} implementation. However, 
> doing this requires the partitioner knowing how to properly partition *all* 
> topics, not just the one or few topics used by the Processor.
> Instead, Kafka Streams should make it easy to optionally add a partitioning 
> function for each sink used in a topology. Each sink represents a single 
> output topic, and thus is far simpler to implement. Additionally, the sink is 
> already typed with the key and value types (via serdes for the keys and 
> values), so the partitioner can be also be typed with the key and value 
> types. Finally, this also keeps the logic of choosing partitioning strategies 
> where it belongs, as part of building the topology.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to