[ 
https://issues.apache.org/jira/browse/KAFKA-15841?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17818530#comment-17818530
 ] 

Henrique Mota commented on KAFKA-15841:
---------------------------------------

Hello [~gharris1727]!

My use case is as follows:

1: I have multiple clients in each environment, with the largest having 90 
clients (databases). 2: Each client has a database in one application, and we 
replicate approximately 100 tables from this database to another application's 
database, with this other database being multi-tenant. 3: Previously, we had 
one topic per table, with some partitions for each topic. So, we needed to 
ensure that if any client had inconsistent data, we would pause the consumption 
for that client and continue processing data for other clients. Thus, we 
separated a topic with a partition for each table and client. We then created 
an extension of the JDBC Sink that can pause a problematic topic, and after 
some time attempt to resume consumption of the paused topic (we decided to use 
one topic per client instead of one partition per client to facilitate 
identification). 4: We have a JDBC Sink for each table. 5: We noticed that if 
we add more than one worker, in this scenario, all topics were assigned to 
worker 0, and the others were left waiting. 6: We tried to change the 'topics' 
property in the configurations using the 'taskConfigs(int maxTasks)' method, 
but Kafka Connect ignores this property when it is returned by 'taskConfigs(int 
maxTasks)'.

> Add Support for Topic-Level Partitioning in Kafka Connect
> ---------------------------------------------------------
>
>                 Key: KAFKA-15841
>                 URL: https://issues.apache.org/jira/browse/KAFKA-15841
>             Project: Kafka
>          Issue Type: Improvement
>          Components: connect
>            Reporter: Henrique Mota
>            Priority: Trivial
>
> In our organization, we utilize JDBC sink connectors to consume data from 
> various topics, where each topic is dedicated to a specific tenant with a 
> single partition. Recently, we developed a custom sink based on the standard 
> JDBC sink, enabling us to pause consumption of a topic when encountering 
> problematic records.
> However, we face limitations within Kafka Connect, as it doesn't allow for 
> appropriate partitioning of topics among workers. We attempted a workaround 
> by breaking down the topics list within the 'topics' parameter. 
> Unfortunately, Kafka Connect overrides this parameter after invoking the 
> {{taskConfigs(int maxTasks)}} method from the 
> {{org.apache.kafka.connect.connector.Connector}} class.
> We request the addition of support in Kafka Connect to enable the 
> partitioning of topics among workers without requiring a fork. This 
> enhancement would facilitate better load distribution and allow for more 
> flexible configurations, particularly in scenarios where topics are dedicated 
> to different tenants.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to