Hi,

I have come across a few stack overflow posts on the subject of 
request-response type semantics through KAFKA. From some of the approaches that 
I've read developers are using KAFKA's auto topic create feature (or 
AdminClient) to dynamically create topics per request-response channel. They 
mention that the number of processes that wish to communicate can vary, with 
the processes using some form of id to create unique topics for themselves. See 
https://stackoverflow.com/questions/35535785/does-kafka-support-request-response-messaging
 and 
https://stackoverflow.com/questions/46662102/correlating-in-kafka-and-dynamic-topics/46678198<https://stackoverflow.com/questions/46662102/correlating-in-kafka-and-dynamic-topics/46678198#46678198>.


This approach leads to several problems however:


  1.  The maximum number of such channels (topics) is limited by the memory of 
a ZK node (in-memory constraints since ZK is not sharded)
  2.  ZK is best used when reads outnumber writes. Creating topics at high 
rates could affect ZK cluster performance.
  3.  Once the communication is done by the initiating process some entity must 
delete the topic it used since it will never be used again

To solve one part of this problem, I find it strange that KAFKA does not 
provide a Topic Retention Policy (not a log retention policy).

This would delete topics which are considered "stale" from the KAFKA cluster 
and from ZK. By deleting topics for the user, this would reduce the amount of 
code and administrative headache stale topics currently place on the user.

Would this be a feature that the community would find value in, while keeping 
true to KAFKA's fundamentals and not require substantial refactoring?

Alexei




Reply via email to