Hi, Yubiao

Is it better to create the same number of retry/dlq topic partitions as the 
original topic?

I mean, if the original topic has 16 partitions, we also create 16(or some 
other numbers, can be configurable) partitions for the retry/dlq topic.

If the topic/partition is a retry/dlq topic, it's name matches the pattern: 
`{topic}-partition-{n}-{subscription}-DLQ`, right?

Can we just parse the name and then get the origin topic name, and create 
retry/dlq topic with the same partitions?

Say, if client wants to create 
`persistent://public/default/some_topic-partition-1-test_sub-DLQ`,
we parse the topic name, then we get the origin topic name 
`persistent://public/default/some_topic` and the subscription name `test_sub`.
After this, we look up the number of partitions of the origin topic, for 
instance, 16 partitions, in the last, create a partitioned topic 
`admin.topics.createPartitionedTopic("persistent://public/default/some_topic-test_sub-DLQ",
 16)`.

And we can also increase the retry/dlq topic partitions if the origin topic 
partitions increased.

WDYT, is it feasible?

Thanks,
Tao Jiuming

On 2024/05/13 18:56:01 Yubiao Feng wrote:
> Hi community
> 
> I want to change the behavior of DLQ/Retry Topic auto creation.
> 
> ### Motivation
> After you set `defaultNumPartitions` to `16`, you will get `16` partitions
> per topic, and `16*16` DLQ partitions per subscription, you will get a huge
> number of DLQs if you have more than one subscription under one topic.  For
> example:
> - create topic `t1` with `16` partitions
> - you will get `t1-partition-0`, `t1-partition-1`...`tp-partition-15`.
> - after you enable DLQ, you will get the following `16*16` DLQs per
> subscription
>   - `t1-partition-0-{subscription}-DLQ-partition-0`
>   - `t1-partition-0-{subscription}-DLQ-partition-1`
>   - ...
>   - `t1-partition-15-{subscription}-DLQ-partition-15`
>   - `t1-partition-1-{subscription}-DLQ-partition-0`
>   - `t1-partition-1-{subscription}-DLQ-partition-1`
>   - ...
>   - ...
>   - ...
>   - `t1-partition-15-{subscription}-partition-15`
> 
> ### Goal
> - Do not create partitioned DLQs/Retry topics automatically.
> - Users can also create partitioned DLQ manually if they need it.
> 
> I have drafted a PR, please take a look
> - https://github.com/apache/pulsar/pull/22705
> 
> Thanks
> Yubiao Feng
> 

Reply via email to